{"version":3,"sources":["webpack:///./src/modules/suivi-conso/SuiviConso.vue?e3c2","webpack:///./src/modules/suivi-conso/suiviConsoMixin.ts","webpack:///./src/modules/suivi-conso/SuiviConso.vue","webpack:///./src/modules/suivi-conso/SuiviConso.vue?a9be","webpack:///./src/modules/suivi-conso/SuiviConso.vue?40c9","webpack:///./node_modules/core-js/modules/es.object.keys.js","webpack:///./src/modules/suivi-conso/SuiviConso.vue?c73a"],"names":["render","_vm","this","_h","$createElement","_c","_self","class","isMobileDevice","attrs","staticClass","_v","staticStyle","companiesAutoComplete","on","onCompanyChange","model","value","callback","$$v","companyName","expression","nomsChirurgienSelectList","onChirurgienChange","chirurgienFiltre","dateFin","reload","dateDebut","suiviConso","_e","alert","codeFamille","length","_s","total","deleteCodeFamilleSelectionne","statsGlobalesFamilles","codeFamilleSelectionne","libelleFamille","_l","produit","key","label","data","staticRenderFns","routeMixin","globalMixin","extend","chart","Date","getFullYear","menuDateDebut","menuDateFin","methods","formatDate","date","split","year","month","day","loadSuiviCA","$loader","go","$http","api","dateDebutFormatee","dateFinFormatee","get","then","x","catch","$swal","toast","errorApi","finally","stop","computed","set","watch","map","nomsChirurgiens","a","text","register","colors","suiviConsoMixin","mobileTypeMixin","components","BAlert","mounted","open","config","that","baseOptions","responsive","plugins","legend","fullSize","align","position","onClick","event","elem","index","$nextTick","generateChart","datalabels","backgroundColor","context","dataset","borderColor","borderRadius","borderWidth","color","display","font","weight","padding","formatter","Math","round","layout","animation","duration","type","labels","datasets","options","Object","keys","nombreArticlePourProduit","filter","undefined","sort","b","localeCompare","name","code","nombreArticle","datas","assign","activeEl","getActiveElements","listeFamilles","chain","orderBy","listeProduitsCodeFamille","destroy","canvas","document","getElementById","style","ctx","getContext","toLocaleDateString","chooseFamille","component","$","toObject","nativeKeys","fails","FAILS_ON_PRIMITIVES","target","stat","forced","it"],"mappings":"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","file":"js/chunk-79d67f0d.b269cc2e.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{class:_vm.isMobileDevice() ? 'ma-0 pa-0' : '',attrs:{\"fluid\":\"\"}},[_c('v-toolbar',{staticClass:\"bordered--bot\",class:_vm.isMobileDevice() ? '' : 'rounded-t',attrs:{\"flat\":\"\",\"color\":\"primary\",\"dark\":\"\",\"extended\":_vm.isMobileDevice() ? true : false}},[_c('v-toolbar-title',[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-chart-line\")]),_vm._v(\"Suivi de la consommation\")],1)],1),_c('v-card',{staticClass:\"rounded-b\",staticStyle:{\"border\":\"1px solid lightgrey\"},attrs:{\"tile\":\"\"}},[_c('v-row',{staticClass:\"pa-2 ma-2 rounded\",staticStyle:{\"border\":\"1px solid lightgrey\"},attrs:{\"dense\":\"\",\"no-gutters\":\"\",\"justify\":\"space-around\"}},[_c('div',{class:_vm.isMobileDevice() ? 'col-12' : 'col-5'},[_c('v-autocomplete',{staticClass:\"mb-2\",attrs:{\"items\":_vm.companiesAutoComplete,\"prepend-inner-icon\":\"mdi-filter\",\"clearable\":\"\",\"clear-icon\":\"mdi-close-circle-outline\",\"dense\":\"\",\"hide-details\":\"\",\"label\":\"Client\",\"outlined\":\"\"},on:{\"change\":_vm.onCompanyChange},model:{value:(_vm.companyName),callback:function ($$v) {_vm.companyName=$$v},expression:\"companyName\"}}),_c('v-autocomplete',{staticClass:\"mb-2\",attrs:{\"items\":_vm.nomsChirurgienSelectList,\"prepend-inner-icon\":\"mdi-filter\",\"clearable\":\"\",\"clear-icon\":\"mdi-close-circle-outline\",\"dense\":\"\",\"hide-details\":\"\",\"label\":\"Chirurgien\",\"outlined\":\"\"},on:{\"change\":_vm.onChirurgienChange},model:{value:(_vm.chirurgienFiltre),callback:function ($$v) {_vm.chirurgienFiltre=$$v},expression:\"chirurgienFiltre\"}})],1),_c('div',{staticClass:\"mb-2\",class:_vm.isMobileDevice() ? 'col-12' : 'col-3'},[_c('DatePicker',{attrs:{\"label\":\"Date de début\",\"max\":_vm.dateFin},on:{\"change\":_vm.reload},model:{value:(_vm.dateDebut),callback:function ($$v) {_vm.dateDebut=$$v},expression:\"dateDebut\"}})],1),_c('div',{staticClass:\"mb-2\",class:_vm.isMobileDevice() ? 'col-12' : 'col-3'},[_c('DatePicker',{attrs:{\"label\":\"Date de fin\",\"min\":_vm.dateDebut},on:{\"change\":_vm.reload},model:{value:(_vm.dateFin),callback:function ($$v) {_vm.dateFin=$$v},expression:\"dateFin\"}})],1)]),(!_vm.suiviConso)?_c('v-row',{attrs:{\"dense\":\"\",\"no-gutters\":\"\",\"justify\":\"center\"}},[_c('BAlert',{attrs:{\"alert\":_vm.alert,\"type\":\"info\",\"text\":\"Veuillez selectionner un client pour afficher sa consommation.\"}})],1):_vm._e(),(_vm.suiviConso && !_vm.suiviConso.codeFamille.length)?_c('v-row',{attrs:{\"dense\":\"\",\"no-gutters\":\"\",\"justify\":\"center\"}},[_c('BAlert',{attrs:{\"alert\":_vm.alert,\"type\":\"error\",\"text\":\"Aucune données pour ce client sur cette période.\"}})],1):_vm._e(),_c('v-container',{attrs:{\"fluid\":\"\"}},[(_vm.suiviConso && _vm.suiviConso.codeFamille.length)?_c('h3',{staticClass:\"mb-5 ml-5\"},[_vm._v(\"Total : \"+_vm._s(_vm.suiviConso.total)+\" produit(s)\")]):_vm._e(),(_vm.codeFamilleSelectionne)?_c('v-app-bar',{staticClass:\"rounded-t\",attrs:{\"dense\":\"\",\"flat\":\"\",\"outlined\":\"\"}},[_c('v-app-bar-nav-icon',{on:{\"click\":_vm.deleteCodeFamilleSelectionne}},[_c('v-icon',{attrs:{\"large\":\"\",\"color\":\"primary\"}},[_vm._v(\"mdi-arrow-left-drop-circle-outline\")])],1),_c('v-chip',{attrs:{\"label\":\"\",\"outlined\":\"\",\"color\":\"primary\"}},[_vm._v(_vm._s(_vm.suiviConso.statsGlobalesFamilles[_vm.codeFamilleSelectionne].libelleFamille))])],1):_vm._e(),(_vm.suiviConso && _vm.suiviConso.codeFamille.length)?_c('v-row',{staticStyle:{\"border\":\"1px solid lightgrey\"},attrs:{\"dense\":\"\",\"no-gutters\":\"\",\"justify\":\"space-between\"}},[_c('v-col',{attrs:{\"cols\":!_vm.isMobileDevice() ? 6 : 12}},[_c('canvas',{staticStyle:{\"max-height\":\"60vh\"},attrs:{\"id\":\"ctx-chart\"}})]),_c('v-col',{staticStyle:{\"border-left\":\"1px solid lightgrey\"},attrs:{\"cols\":_vm.isMobileDevice() ? 12 : 4}},[(_vm.suiviConso && _vm.suiviConso.codeFamille.length && !_vm.codeFamilleSelectionne)?_c('BAlert',{attrs:{\"alert\":_vm.alert,\"type\":\"info\",\"text\":\"Cliquer sur un élément du diagramme pour voir les produits associés à la famille selectionnée.\"}}):_vm._e(),(_vm.codeFamilleSelectionne)?_c('v-list',{attrs:{\"dense\":\"\"}},_vm._l((_vm.listeProduitsCodeFamille),function(produit){return _c('v-list-item',{key:'liste-produit:' + produit.label},[_c('v-list-item-icon',[_c('v-icon',{attrs:{\"large\":\"\"}},[_vm._v(\"mdi-arrow-right-drop-circle-outline\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(produit.label))])],1),_c('v-list-item-action-text',[_c('v-chip',{attrs:{\"label\":\"\"}},[_vm._v(_vm._s(produit.data))])],1)],1)}),1):_vm._e()],1)],1):_vm._e()],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mixins from 'vue-typed-mixins'\r\nimport routeMixin from '@/router/routeMixin'\r\nimport SuiviConsoOutput from './models/SuiviConsoOutput'\r\nimport { Chart } from 'chart.js'\r\nimport globalMixin from '../globalMixin'\r\nimport _ from 'lodash'\r\nimport Vue from 'vue'\r\n\r\nexport default mixins(routeMixin, globalMixin).extend({\r\n data() {\r\n return {\r\n companyName: '',\r\n suiviConso: null as null | SuiviConsoOutput,\r\n codeFamilleSelectionne: '',\r\n chart: null as null | Chart<'doughnut', number[], string>,\r\n dateDebut: new Date().getFullYear() + '-01-01',\r\n dateFin: '',\r\n menuDateDebut: '',\r\n menuDateFin: '',\r\n chirurgienFiltre: '',\r\n nomsChirurgienSelectList: [] as { text: string; value: string }[]\r\n }\r\n },\r\n methods: {\r\n formatDate(date: string) {\r\n const [year, month, day] = date.split('-')\r\n return `${day}/${month}/${year}`\r\n },\r\n loadSuiviCA() {\r\n this.suiviConso = null\r\n this.codeFamilleSelectionne = ''\r\n\r\n if (!this.companyName) {\r\n return null\r\n }\r\n\r\n this.$loader.go()\r\n\r\n return this.$http\r\n .api(`suiviConso?name=${this.companyName}&dateDebut=${this.dateDebutFormatee}&dateFin=${this.dateFinFormatee}&codeChirurgien=${this.chirurgienFiltre || ''}`)\r\n .get()\r\n .then(x => {\r\n this.suiviConso = x.data\r\n\r\n // this.$swal.toast.success()\r\n })\r\n .catch(x => this.$swal.toast.errorApi(x))\r\n .finally(() => this.$loader.stop())\r\n }\r\n },\r\n computed: {\r\n dateDebutFormatee: {\r\n get: function(): string {\r\n if (!this.dateDebut) return ''\r\n return this.formatDate(this.dateDebut)\r\n },\r\n set: function(value: string): void {\r\n this.dateDebut = value\r\n }\r\n },\r\n dateFinFormatee: {\r\n get: function(): string {\r\n if (!this.dateFin) return ''\r\n return this.formatDate(this.dateFin)\r\n },\r\n set: function(value: string): void {\r\n this.dateFin = value\r\n }\r\n }\r\n },\r\n watch: {\r\n // On passe par un watcher au lieu d'un computed car on souhaite trigger le changement de liste seulement quand on a pas de filtre chirurgien\r\n // Dans le cas où on a un filtre chirurgien, il disparait visuellement au rechargement de la liste\r\n suiviConso: function() {\r\n if (this.chirurgienFiltre) return\r\n if (!this.suiviConso) return\r\n\r\n this.nomsChirurgienSelectList = _.map(this.suiviConso.nomsChirurgiens, a => {\r\n return {\r\n text: a,\r\n value: a\r\n }\r\n })\r\n }\r\n }\r\n})\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport mobileTypeMixin from '@/plugins/mixins/mobileTypeMixin'\r\nimport mixins from 'vue-typed-mixins'\r\nimport suiviConsoMixin from './suiviConsoMixin'\r\nimport { Chart, ChartConfiguration, ChartData, ChartOptions, registerables } from 'chart.js'\r\nChart.register(...registerables)\r\nimport ChartDataLabels from 'chartjs-plugin-datalabels'\r\nimport _ from 'lodash'\r\nimport Openable from '@/global/viewmodels/openable'\r\nChart.register(ChartDataLabels)\r\n\r\nconst colors = ['#7fdbff', '#0074d9', '#01ff70', '#001f3f', '#39cccc', '#3d9970', '#2ecc40', '#ff4136', '#85144b', '#ff851b', '#b10dc9', '#ffdc00', '#f012be', '#aaaaaa', '#111111', '#dddddd']\r\n\r\nexport default mixins(suiviConsoMixin, mobileTypeMixin).extend({\r\n components: {\r\n BAlert: () => import('@/layout/components/BiobankAlert.vue')\r\n },\r\n data() {\r\n return { alert: new Openable() }\r\n },\r\n mounted() {\r\n this.reload()\r\n this.alert.open()\r\n },\r\n computed: {\r\n config(): ChartConfiguration {\r\n const that = this\r\n const baseOptions: ChartOptions = {\r\n responsive: true,\r\n plugins: {\r\n legend: {\r\n fullSize: true,\r\n align: 'start',\r\n\r\n position: this.isMobileDevice() ? 'top' : 'left',\r\n onClick: function(event, elem) {\r\n if (!that.codeFamilleSelectionne) {\r\n // @ts-ignore\r\n const data = that.suiviConso?.codeFamille[elem.index]\r\n if (data) {\r\n that.codeFamilleSelectionne = data\r\n that.$nextTick(() => that.generateChart())\r\n }\r\n }\r\n }\r\n },\r\n datalabels: {\r\n backgroundColor: function(context: any) {\r\n return context.dataset.backgroundColor\r\n },\r\n borderColor: 'white',\r\n borderRadius: 25,\r\n borderWidth: 2,\r\n color: 'white',\r\n display: function() {\r\n return true\r\n },\r\n font: {\r\n weight: 'bold'\r\n },\r\n padding: 6,\r\n formatter: Math.round\r\n }\r\n },\r\n // Core options\r\n layout: {\r\n padding: 16\r\n },\r\n animation: {\r\n duration: 500\r\n }\r\n }\r\n if (!this.suiviConso)\r\n return {\r\n type: 'doughnut' as 'doughnut',\r\n data: {\r\n labels: [],\r\n datasets: []\r\n },\r\n options: baseOptions\r\n }\r\n if (!this.codeFamilleSelectionne) {\r\n const labels = this.suiviConso.codeFamille\r\n .map(code => `${this.suiviConso?.statsGlobalesFamilles[code].libelleFamille} (${this.suiviConso?.statsGlobalesFamilles[code].nombreArticle})`)\r\n .sort((a, b) => a.localeCompare(b))\r\n .filter(function(x): x is string {\r\n return x !== undefined\r\n })\r\n const data = this.suiviConso.codeFamille\r\n .sort((a, b) => (this.suiviConso?.statsGlobalesFamilles[a].libelleFamille ?? '').localeCompare(this.suiviConso?.statsGlobalesFamilles[b].libelleFamille ?? ''))\r\n .map(code => this.suiviConso?.statsGlobalesFamilles[code].nombreArticle)\r\n .filter(function(x): x is number {\r\n return x !== undefined\r\n })\r\n\r\n const datas: ChartData = {\r\n labels: labels,\r\n datasets: [\r\n {\r\n label: `Répartition des famille de produits achetés`,\r\n data: data,\r\n backgroundColor: data.map((x, index) => colors[index]),\r\n datalabels: {\r\n display: false\r\n }\r\n }\r\n ]\r\n }\r\n\r\n // prettier-ignore\r\n const that = this;\r\n const options = Object.assign(baseOptions, {\r\n onClick: function() {\r\n if (!that.chart) return\r\n\r\n const activeEl = that.chart.getActiveElements()\r\n if (activeEl.length == 0) return null\r\n\r\n if (!that.chart.data.labels) return\r\n\r\n const data = that.suiviConso?.codeFamille[activeEl[0].index]\r\n if (data) {\r\n that.codeFamilleSelectionne = data\r\n that.$nextTick(() => that.generateChart())\r\n }\r\n }\r\n })\r\n\r\n return {\r\n type: 'doughnut' as 'doughnut',\r\n data: datas,\r\n options: options\r\n }\r\n } else {\r\n const labels = Object.keys(this.suiviConso.statsGlobalesFamilles[this.codeFamilleSelectionne].nombreArticlePourProduit)\r\n .filter(function(x): x is string {\r\n return x !== undefined\r\n })\r\n .sort((a, b) => a.localeCompare(b))\r\n const data = labels\r\n .map(name => this.suiviConso?.statsGlobalesFamilles[this.codeFamilleSelectionne].nombreArticlePourProduit[name])\r\n .filter(function(x): x is number {\r\n return x !== undefined\r\n })\r\n\r\n const datas: ChartData = {\r\n labels: labels,\r\n datasets: [\r\n {\r\n label: `Répartition des produits achetés de la famille \"${this.suiviConso.statsGlobalesFamilles[this.codeFamilleSelectionne].libelleFamille}}\"`,\r\n data: data,\r\n backgroundColor: data.map((x, index) => colors[index]),\r\n datalabels: {\r\n display: false\r\n }\r\n }\r\n ]\r\n }\r\n\r\n return {\r\n type: 'doughnut' as 'doughnut',\r\n data: datas,\r\n options: baseOptions\r\n }\r\n }\r\n },\r\n listeFamilles() {\r\n if (this.suiviConso) {\r\n return _.chain(this.suiviConso.codeFamille)\r\n .map(code => ({\r\n label: this.suiviConso?.statsGlobalesFamilles[code].libelleFamille,\r\n code: code,\r\n data: this.suiviConso?.statsGlobalesFamilles[code].nombreArticle\r\n }))\r\n .filter(function(x) {\r\n return x.data !== undefined\r\n })\r\n .orderBy(a => a.label)\r\n .value()\r\n }\r\n },\r\n listeProduitsCodeFamille: function() {\r\n if (this.suiviConso && this.codeFamilleSelectionne) {\r\n const labels = Object.keys(this.suiviConso.statsGlobalesFamilles[this.codeFamilleSelectionne].nombreArticlePourProduit).filter(function(x): x is string {\r\n return x !== undefined\r\n })\r\n return _.chain(labels)\r\n .map(name => {\r\n return {\r\n data: this.suiviConso?.statsGlobalesFamilles[this.codeFamilleSelectionne].nombreArticlePourProduit[name],\r\n label: name\r\n }\r\n })\r\n .filter(function(x) {\r\n return x.data !== undefined\r\n })\r\n .orderBy(a => a.label)\r\n .value()\r\n }\r\n }\r\n },\r\n\r\n methods: {\r\n onCompanyChange() {\r\n this.chirurgienFiltre = ''\r\n this.reload()\r\n },\r\n onChirurgienChange(){\r\n this.reload()\r\n },\r\n reload() {\r\n const loadSuiviCA = this.loadSuiviCA()\r\n if (loadSuiviCA) loadSuiviCA.then(() => this.generateChart())\r\n },\r\n generateChart() {\r\n if (!this.config) return\r\n\r\n if (this.chart) this.chart.destroy()\r\n\r\n const canvas = document.getElementById('ctx-chart')\r\n if (!canvas) return\r\n\r\n if (this.isMobileDevice() && this.codeFamilleSelectionne) {\r\n canvas.style.display = 'none'\r\n } else {\r\n canvas.style.display = 'block'\r\n const ctx = (canvas as HTMLCanvasElement).getContext('2d')\r\n if (!ctx) return\r\n\r\n // @ts-ignore\r\n this.chart = new Chart(ctx, this.config)\r\n }\r\n },\r\n formatDate(date: Date) {\r\n return new Date(date).toLocaleDateString('fr-FR')\r\n },\r\n deleteCodeFamilleSelectionne() {\r\n this.codeFamilleSelectionne = ''\r\n this.generateChart()\r\n },\r\n chooseFamille(data: string) {\r\n this.codeFamilleSelectionne = data\r\n this.generateChart()\r\n }\r\n }\r\n})\r\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--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SuiviConso.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--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SuiviConso.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SuiviConso.vue?vue&type=template&id=1e9ef8cc&scoped=true&\"\nimport script from \"./SuiviConso.vue?vue&type=script&lang=ts&\"\nexport * from \"./SuiviConso.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SuiviConso.vue?vue&type=style&index=0&id=1e9ef8cc&lang=scss&scoped=true&\"\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 \"1e9ef8cc\",\n null\n \n)\n\nexport default component.exports","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SuiviConso.vue?vue&type=style&index=0&id=1e9ef8cc&lang=scss&scoped=true&\""],"sourceRoot":""}