{"version":3,"sources":["webpack:///./node_modules/class-transformer/esm5/decorators/type.decorator.js","webpack:///./src/models/report.ts","webpack:///./src/views/admin/reports/Index.vue?1e88","webpack:///./src/views/admin/reports/Index.vue","webpack:///./src/models/crop-substance.ts","webpack:///./src/models/crop.ts","webpack:///./src/models/substance.ts"],"names":["Type","typeFunction","options","target","propertyName","reflectedType","Reflect","getMetadata","addTypeMetadata","constructor","Report","id","createdAt","updatedAt","deletedAt","farmer","field","area","city","stateId","cropId","userId","crop","Model","__decorate","Expose","name","Crop","User","_hoisted_1","class","_hoisted_2","_defineComponent","setup","__props","quasar","useQuasar","reports","ref","tableColumns","required","label","align","row","user","sortable","regional","region","format","getReports","loading","show","api","get","params","relations","then","response","console","log","data","hide","value","plainToInstance","catch","error","notify","type","message","init","wrapCsvValue","val","formatFn","formatted","String","split","join","exportTableXLSX","window","open","defaults","baseURL","localStorage","getItem","exportTable","content","map","col","concat","status","exportFile","color","icon","_ctx","_cache","_component_q_btn","_resolveComponent","_component_q_td","_component_q_table","_openBlock","_createElementBlock","_createElementVNode","_createVNode","title","rows","columns","_withCtx","onClick","props","_","__exports__","QTable","QBtn","QTd","CropSubstance","substanceId","substance","Substance","exportation","extraction","SubstanceUnitString","code","utf8Code","unit"],"mappings":"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","file":"js/chunk-9c19df32.c2c07668.js","sourcesContent":["import { defaultMetadataStorage } from '../storage';\n/**\n * Specifies a type of the property.\n * The given TypeFunction can return a constructor. A discriminator can be given in the options.\n *\n * Can be applied to properties only.\n */\nexport function Type(typeFunction, options) {\n if (options === void 0) { options = {}; }\n return function (target, propertyName) {\n var reflectedType = Reflect.getMetadata('design:type', target, propertyName);\n defaultMetadataStorage.addTypeMetadata({\n target: target.constructor,\n propertyName: propertyName,\n reflectedType: reflectedType,\n typeFunction: typeFunction,\n options: options,\n });\n };\n}\n//# sourceMappingURL=type.decorator.js.map","import { Crop } from './crop';\r\nimport { User } from './user';\r\nimport { Model } from './model';\r\nimport { Expose, Transform, Type } from 'class-transformer';\r\nimport moment, { Moment } from 'moment';\r\n\r\nclass Report extends Model {\r\n @Expose()\r\n public farmer: string;\r\n\r\n @Expose()\r\n public field: string;\r\n\r\n @Expose()\r\n public area: number;\r\n\r\n @Expose()\r\n public city: string;\r\n\r\n @Expose({ name: 'state_id' })\r\n public stateId: number;\r\n\r\n @Expose({ name: 'crop_id' })\r\n public cropId: number;\r\n\r\n @Expose({ name: 'user_id' })\r\n public userId: number;\r\n\r\n @Expose()\r\n @Type(() => Crop)\r\n public crop?: Crop;\r\n\r\n @Expose()\r\n @Type(() => User)\r\n public user?: User | null;\r\n\r\n constructor(\r\n id: number | null,\r\n createdAt: Moment,\r\n updatedAt: Moment,\r\n deletedAt: Moment | null,\r\n farmer: string,\r\n field: string,\r\n area: number,\r\n city: string,\r\n stateId: number,\r\n cropId: number,\r\n userId: number,\r\n crop: Crop\r\n ) {\r\n super(id, createdAt, updatedAt, deletedAt);\r\n\r\n this.farmer = farmer;\r\n this.field = field;\r\n this.area = area;\r\n this.city = city;\r\n this.stateId = stateId;\r\n this.cropId = cropId;\r\n this.userId = userId;\r\n this.crop = crop;\r\n }\r\n}\r\n\r\nexport { Report };\r\n","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"row full-width\" }\nconst _hoisted_2 = { class: \"col-12\" }\n\nimport { api } from '@/utils';\r\nimport { plainToInstance } from 'class-transformer';\r\nimport { ref } from 'vue';\r\nimport { Report } from '@/models/report';\r\nimport exportFile from 'quasar/src/utils/export-file.js';import useQuasar from 'quasar/src/composables/use-quasar.js';;\r\n\r\n\nexport default /*#__PURE__*/_defineComponent({\n setup(__props) {\n\r\nconst quasar = useQuasar();\r\n\r\nconst reports = ref([]);\r\n\r\nconst tableColumns = [\r\n {\r\n name: 'user',\r\n required: true,\r\n label: 'Usuário',\r\n align: 'left',\r\n field: (row: Report): string => row.user?.name || '-',\r\n sortable: true,\r\n },\r\n {\r\n name: 'regional',\r\n required: true,\r\n label: 'Regional',\r\n align: 'left',\r\n field: (row: Report): number => row.user?.regional,\r\n sortable: true,\r\n },\r\n {\r\n name: 'region',\r\n required: true,\r\n label: 'Região',\r\n align: 'left',\r\n field: (row: Report): number => row.user?.region,\r\n sortable: true,\r\n },\r\n {\r\n name: 'createdAt',\r\n required: true,\r\n label: 'Data de criação',\r\n align: 'center',\r\n field: (row: Report): string => row.createdAt.format('L'),\r\n sortable: true,\r\n },\r\n {\r\n name: 'farmer',\r\n required: true,\r\n label: 'Amostra',\r\n align: 'left',\r\n field: (row: Report): string => row.crop?.name || '-',\r\n sortable: true,\r\n },\r\n {\r\n name: 'farmer',\r\n required: true,\r\n label: 'Cliente',\r\n align: 'left',\r\n field: (row: Report): string => row.farmer,\r\n sortable: true,\r\n },\r\n];\r\n\r\nconst getReports = () => {\r\n quasar.loading.show();\r\n\r\n api\r\n .get('report', { params: { relations: 'crop,user' } })\r\n .then((response) => {\r\n\r\n console.log(\"testes: \");\r\n console.log(response.data);\r\n\r\n quasar.loading.hide();\r\n\r\n reports.value = plainToInstance(Report, response.data);\r\n })\r\n .catch((error) => {\r\n quasar.notify({\r\n type: 'negative',\r\n message: 'Erro ao obter informações dos testes.',\r\n });\r\n\r\n quasar.loading.hide();\r\n\r\n console.log('Erro ao obter informações dos testes.', error.response);\r\n });\r\n\r\n};\r\n\r\nconst init = () => {\r\n getReports();\r\n};\r\n\r\ninit();\r\n\r\nfunction wrapCsvValue (val, formatFn, row) {\r\n let formatted = formatFn !== void 0\r\n ? formatFn(val, row)\r\n : val\r\n\r\n formatted = formatted === void 0 || formatted === null\r\n ? ''\r\n : String(formatted)\r\n\r\n formatted = formatted.split('\"').join('\"\"')\r\n\r\n return `\"${formatted}\"`\r\n}\r\n\r\nconst exportTableXLSX = () => {\r\n window.open(api.defaults.baseURL + \"/report?relations=crop,user&export=1&_token=\" + localStorage.getItem('token'), \"_blank\");\r\n}\r\n\r\nconst exportTable = () => {\r\n const content = [tableColumns.map(col => wrapCsvValue(col.label))].concat(\r\n reports.value.map(row => tableColumns.map(col => wrapCsvValue(\r\n typeof col.field === 'function'\r\n ? col.field(row)\r\n : row[ col.field === void 0 ? col.name : col.field ],\r\n col.format,\r\n row\r\n )).join(','))\r\n ).join('\\r\\n')\r\n\r\n const status = exportFile(\r\n 'relatorio-de-testes.csv',\r\n content,\r\n 'text/csv'\r\n )\r\n\r\n if (status !== true) {\r\n quasar.notify({\r\n message: 'O seu navegador negou o download!',\r\n color: 'negative',\r\n icon: 'warning'\r\n })\r\n }\r\n }\r\n\r\n\nreturn (_ctx: any,_cache: any) => {\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n const _component_q_td = _resolveComponent(\"q-td\")!\n const _component_q_table = _resolveComponent(\"q-table\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_q_table, {\n title: \"Lista de testes\",\n rows: reports.value,\n \"row-key\": \"id\",\n columns: tableColumns,\n \"rows-per-page-options\": [10, 50, 100, 200, 0],\n class: \"\"\n }, {\n \"top-right\": _withCtx(() => [\n _createVNode(_component_q_btn, {\n class: \"q-mr-sm\",\n color: \"primary\",\n \"icon-right\": \"archive\",\n label: \"Exportar em XLSX\",\n \"no-caps\": \"\",\n onClick: exportTableXLSX\n }),\n _createVNode(_component_q_btn, {\n color: \"primary\",\n \"icon-right\": \"archive\",\n label: \"Exportar em CSV\",\n \"no-caps\": \"\",\n onClick: exportTable\n })\n ]),\n \"body-cell-actions\": _withCtx((props) => [\n _createVNode(_component_q_td, { props: props }, null, 8, [\"props\"])\n ]),\n _: 1\n }, 8, [\"rows\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./Index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Index.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__\nimport QTable from 'quasar/src/components/table/QTable.js';\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport QTd from 'quasar/src/components/table/QTd.js';\nimport qInstall from \"../../../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QTable,QBtn,QTd});\n","import { Model } from './model';\r\nimport { Moment } from 'moment';\r\nimport { Substance } from './substance';\r\nimport { Expose, Type } from 'class-transformer';\r\n\r\nclass CropSubstance extends Model {\r\n @Expose()\r\n public value: number;\r\n\r\n @Expose({ name: 'crop_id' })\r\n public cropId: number;\r\n\r\n @Expose({ name: 'substance_id' })\r\n public substanceId: number;\r\n\r\n @Expose()\r\n @Type(() => Substance)\r\n public substance: Substance;\r\n\r\n constructor(\r\n id: number | null,\r\n createdAt: Moment,\r\n updatedAt: Moment,\r\n deletedAt: Moment,\r\n value: number,\r\n cropId: number,\r\n substanceId: number,\r\n substance: Substance\r\n ) {\r\n super(id, createdAt, updatedAt, deletedAt);\r\n\r\n this.value = value;\r\n this.cropId = cropId;\r\n this.substanceId = substanceId;\r\n this.substance = substance;\r\n }\r\n}\r\n\r\nexport { CropSubstance };\r\n","import { CropSubstance } from './crop-substance';\r\nimport { Model } from './model';\r\nimport { Moment } from 'moment';\r\nimport { Expose, Type } from 'class-transformer';\r\n\r\nclass Crop extends Model {\r\n @Expose()\r\n public name: string;\r\n\r\n @Expose()\r\n @Type(() => CropSubstance)\r\n public exportation?: CropSubstance[];\r\n\r\n @Expose()\r\n @Type(() => CropSubstance)\r\n public extraction?: CropSubstance[];\r\n\r\n constructor(\r\n id: number | null,\r\n createdAt: Moment,\r\n updatedAt: Moment,\r\n deletedAt: Moment | null,\r\n name: string,\r\n exportation: CropSubstance[],\r\n extraction: CropSubstance[]\r\n ) {\r\n super(id, createdAt, updatedAt, deletedAt);\r\n\r\n this.name = name;\r\n this.exportation = exportation;\r\n this.extraction = extraction;\r\n }\r\n}\r\n\r\nexport { Crop };\r\n","import { Expose } from 'class-transformer';\r\nimport { Model } from './model';\r\nimport { Moment } from 'moment';\r\n\r\ntype SubstanceUnit = 'kg' | 'g';\r\n\r\nenum SubstanceUnitString {\r\n kg = 'Kg',\r\n g = 'g',\r\n}\r\n\r\nclass Substance extends Model {\r\n @Expose()\r\n public code: string;\r\n\r\n @Expose({ name: 'utf8_code' })\r\n public utf8Code: string;\r\n\r\n @Expose()\r\n public unit: SubstanceUnit;\r\n\r\n constructor(\r\n id: number | null,\r\n createdAt: Moment,\r\n updatedAt: Moment,\r\n deletedAt: Moment | null,\r\n code: string,\r\n utf8Code: string,\r\n unit: SubstanceUnit\r\n ) {\r\n super(id, createdAt, updatedAt, deletedAt);\r\n\r\n this.code = code;\r\n this.utf8Code = utf8Code;\r\n this.unit = unit;\r\n }\r\n}\r\n\r\nexport { Substance, SubstanceUnit, SubstanceUnitString };\r\n"],"sourceRoot":""}