{"version":3,"sources":["webpack:///./src/services/loadingMixin.js","webpack:///./src/domain/events/menu.js","webpack:///./src/domain/events/engineeringModulesHeader.js","webpack:///./src/components/treeview/assetTreeviewInstallationAcessMixin.js","webpack:///./src/domain/mixins/installation/assetAccessorMixin.js","webpack:///./src/services/globalEventBus.js","webpack:///./src/app/installation/engineering/EngineeringAsset.vue?8075","webpack:///src/app/installation/engineering/EngineeringAsset.vue","webpack:///./src/app/installation/engineering/EngineeringAsset.vue?86f3","webpack:///./src/app/installation/engineering/EngineeringAsset.vue"],"names":["createStartFunction","loadingCountDataName","this","createEndFunction","clearLoadingMethodName","createClearFunction","createWaitFunction","startLoadingMethodName","endLoadingMethodName","promise","waitLoading","createLoadingComputedFunction","createPrototype","params","loadingComputedName","waitLoadingMethodName","data","methods","computed","build","name","capitalizedName","firstCapitalized","defaultLoadingManager","refreshMenuItems","info","refresh","print","treeview","wifi","updateTitle","created","initInstallationAcessListener","beforeDestroy","removeInstallationAcessListener","globalEventBus","on","events","openInstallationWindow","off","$route","installationId","assetId","routeData","$router","resolve","window","open","href","props","typesWithAssets","Array","currentAsset","currentAssetType","assets","find","id","toUpperCase","some","validateNamespaceOneDepthLevel","term","split","length","Error","emptyEventNameValidator","EventBus","eventNameValidator","listenersCollection","eventName","fn","scope","getListeners","push","Object","keys","forEach","listeners","index","findIndex","listener","splice","clearListeners","args","hasListenersConfig","call","onEach","emit","render","_vm","_h","$createElement","_c","_self","attrs","key","assetModule","staticRenderFns","mixins","initListener","handleMenuItems","assetSubMenu","items","removeListener","beforeRouteUpdate","startLoading","next","endLoading","component"],"mappings":"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","file":"js/engineeringAsset.6aecf34b.js","sourcesContent":["import { firstCapitalized } from './stringHelper';\r\n\r\n/**\r\n * Cria a função de iniciar carregamento.\r\n * A função gerada tem o comportamento de incrementar em 1 o contador de carregamentos.\r\n */\r\nfunction createStartFunction({\r\n loadingCountDataName,\r\n}) {\r\n return function startLoading() {\r\n this[loadingCountDataName] += 1;\r\n };\r\n}\r\n\r\n/**\r\n * Cria a função de finalizar carregamento.\r\n * A função gerada tem o comportamento de decrementar em 1 o contador de carregamentos.\r\n * Também faz a checagem para garantir que o contador não fique negativo após o decremento.\r\n */\r\nfunction createEndFunction({\r\n loadingCountDataName,\r\n clearLoadingMethodName,\r\n}) {\r\n return function endLoading() {\r\n this[loadingCountDataName] -= 1;\r\n if (this[loadingCountDataName] < 0) {\r\n this[clearLoadingMethodName]();\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * Cria a função para limpar o carregamento.\r\n * A função gerada tem o comportamento de zerar o contador de carregamentos.\r\n */\r\nfunction createClearFunction({\r\n loadingCountDataName,\r\n}) {\r\n return function clearLoading() {\r\n this[loadingCountDataName] = 0;\r\n };\r\n}\r\n\r\n/**\r\n * Cria a função para aguardar um carregamento assincrono.\r\n * A função gerada tem o comportamento de esperar uma promessa recebida por parametro. Enquanto\r\n * a promessa não acaba, ela define um carregamento, removendo ele ao fim da execução.\r\n */\r\nfunction createWaitFunction({\r\n startLoadingMethodName,\r\n endLoadingMethodName,\r\n}) {\r\n return async function waitLoading(promise) {\r\n this[startLoadingMethodName]();\r\n try {\r\n await promise;\r\n } finally {\r\n this[endLoadingMethodName]();\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * Cria a função para gerar a computed que fala se está havendo carregamento.\r\n * A função gerada tem a intenção de retornar verdadeira se o contador for maior do que zero.\r\n */\r\nfunction createLoadingComputedFunction({\r\n loadingCountDataName,\r\n}) {\r\n return function loading() {\r\n return !!this[loadingCountDataName];\r\n };\r\n}\r\n\r\n/**\r\n * Cria o protótipo do mixin com base nos nomes passados por parametro.\r\n */\r\nfunction createPrototype(params) {\r\n const {\r\n loadingComputedName,\r\n loadingCountDataName,\r\n startLoadingMethodName,\r\n endLoadingMethodName,\r\n clearLoadingMethodName,\r\n waitLoadingMethodName,\r\n } = params;\r\n\r\n return {\r\n data: () => ({\r\n [loadingCountDataName]: 0,\r\n }),\r\n methods: {\r\n [startLoadingMethodName]: createStartFunction(params),\r\n [endLoadingMethodName]: createEndFunction(params),\r\n [clearLoadingMethodName]: createClearFunction(params),\r\n [waitLoadingMethodName]: createWaitFunction(params),\r\n },\r\n computed: {\r\n [loadingComputedName]: createLoadingComputedFunction(params),\r\n },\r\n };\r\n}\r\n\r\n/**\r\n * Constrói um mixin de carregamento.\r\n *\r\n * @param {String} [name] Nome do carregamento para concatenar aos elementos gerados.\r\n *\r\n * Interface gerada:\r\n * {\r\n * data: () => ({\r\n * loading{name}Count: Number,\r\n * }),\r\n * methods: {\r\n * startLoading{name}(): void,\r\n * endLoading{name}(): void,\r\n * clearLoading{name}(): void,\r\n * waitLoading{name}(Promise): Promise,\r\n * },\r\n * computed: {\r\n * loading{name}: Boolean\r\n * }\r\n * }\r\n *\r\n * Exemplo:\r\n *\r\n * const mixin = build('Person');\r\n *\r\n * expect(mixin).toMatchObject({\r\n * data: () => ({\r\n * loadingPersonCount,\r\n * }),\r\n * methods: {\r\n * startLoadingPerson,\r\n * endLoadingPerson,\r\n * clearLoadingPerson,\r\n * waitLoadingPerson,\r\n * },\r\n * computed: {\r\n * loadingPerson,\r\n * }\r\n * });\r\n *\r\n * Para detalhes do funcionamento da interface gerada, veja a documentação\r\n * do mixin básico mais a abaixo.\r\n */\r\nexport function build(name = '') {\r\n const capitalizedName = firstCapitalized(name);\r\n const loadingComputedName = `loading${capitalizedName}`;\r\n const loadingCountDataName = `loading${capitalizedName}Count`;\r\n const startLoadingMethodName = `startLoading${capitalizedName}`;\r\n const endLoadingMethodName = `endLoading${capitalizedName}`;\r\n const clearLoadingMethodName = `clearLoading${capitalizedName}`;\r\n const waitLoadingMethodName = `waitLoading${capitalizedName}`;\r\n\r\n return createPrototype({\r\n loadingComputedName,\r\n loadingCountDataName,\r\n startLoadingMethodName,\r\n endLoadingMethodName,\r\n clearLoadingMethodName,\r\n waitLoadingMethodName,\r\n });\r\n}\r\n\r\n/**\r\n * Mixin básico de carregamento.\r\n *\r\n * Interface do mixin:\r\n *\r\n * {\r\n * data: () => ({\r\n * // Contagem de carregamentos definidos.\r\n * loadingCount: Number,\r\n * }),\r\n * methods: {\r\n * // Seta um carregamento.\r\n * startLoading(): void,\r\n *\r\n * // Remove um carregamento.\r\n * endLoading(): void,\r\n *\r\n * // Limpa os carregamentos, zerando tudo.\r\n * clearLoading(): void,\r\n *\r\n * // Espera uma promessa, definindo um carregamento enquanto estiver em execução.\r\n * waitLoading(Promise): Promise,\r\n * },\r\n * computed: {\r\n * // True se a contagem for diferente de zero.\r\n * loading: Boolean\r\n * }\r\n * }\r\n *\r\n * Exemplos de uso do mixin nos components Vue:\r\n *\r\n * import loadingMixin from '@/services/loadingMixin';\r\n *\r\n * export default {\r\n * mixins: [\r\n * loadingMixin,\r\n * ],\r\n * methods: {\r\n * refreshDataA() {\r\n * this.startLoading();\r\n * Service.getData().then(() => {\r\n * this.endLoading();\r\n * }).catch(() => {\r\n * this.endLoading();\r\n * });\r\n * },\r\n * async refreshDataB() {\r\n * this.startLoading();\r\n * try {\r\n * await Service.getData();\r\n * } finally {\r\n * this.endLoading();\r\n * }\r\n * },\r\n * refreshDataC() {\r\n * this.waitLoading(Service.getData());\r\n * },\r\n * }\r\n * }\r\n *\r\n * Carregando...\r\n */\r\nconst defaultLoadingManager = build();\r\nexport default defaultLoadingManager;\r\n","export default {\r\n refreshMenuItems: 'refresh.menu.items',\r\n};\r\n","export default {\r\n info: 'engineeringModulesHeader.info',\r\n refresh: 'engineeringModulesHeader.refresh',\r\n print: 'engineeringModulesHeader.print',\r\n treeview: 'engineeringModulesHeader.treeview',\r\n wifi: 'engineeringModulesHeader.wifi',\r\n updateTitle: 'engineeringModulesHeader.updateTitle',\r\n};\r\n","import globalEventBus from '@/services/globalEventBus';\r\nimport events from '@/domain/events/engineeringModulesHeader';\r\n\r\nexport default {\r\n created() {\r\n this.initInstallationAcessListener();\r\n },\r\n beforeDestroy() {\r\n this.removeInstallationAcessListener();\r\n },\r\n methods: {\r\n initInstallationAcessListener() {\r\n globalEventBus.on(events.info, this.openInstallationWindow, this);\r\n },\r\n removeInstallationAcessListener() {\r\n globalEventBus.off(events.info, this.openInstallationWindow, this);\r\n },\r\n openInstallationWindow() {\r\n const { installationId, assetId } = this.$route.params;\r\n\r\n const routeData = this.$router.resolve({\r\n name: 'monitoring.asset-information.registration-data',\r\n params: {\r\n installationId,\r\n assetId,\r\n },\r\n });\r\n window.open(routeData.href, '_blank');\r\n },\r\n },\r\n};\r\n","export default {\r\n props: {\r\n typesWithAssets: Array,\r\n },\r\n computed: {\r\n currentAsset() {\r\n const { assetId } = this.$route.params;\r\n return this.currentAssetType\r\n && this.currentAssetType.assets\r\n .find(({ id }) => assetId.toUpperCase() === id.toUpperCase());\r\n },\r\n currentAssetType() {\r\n const { assetId } = this.$route.params;\r\n return this.typesWithAssets\r\n .find(({ assets }) => assets\r\n .some(({ id }) => assetId.toUpperCase() === id.toUpperCase()));\r\n },\r\n },\r\n};\r\n","export function validateNamespaceOneDepthLevel(term) {\r\n if (typeof term === 'string' && term.split('.').length >= 2) {\r\n return;\r\n }\r\n\r\n throw new Error('Nome de evento inválido.\\nO nome do evento deve ser uma string com namespace'\r\n + 'com pelo 1 nível de profundidade, exemplo: \"alarms.autorefresh\", \"mySigma.nonConfiguredArea\".');\r\n}\r\n\r\nconst emptyEventNameValidator = () => null;\r\n\r\n/**\r\n * Event Bus / Barramento de eventos\r\n *\r\n * Event bus simples para ouvintes e publicadores.\r\n *\r\n * Os nome de eventos usados aqui devem ser no formato \"namespace.evento\".\r\n * O namespace deve ter pelo menos 1 nível de profundidade a fim de evitar colisão de eventos,\r\n * exemplo: \"myData.save\", \"myData.load\", \"profile.save\".\r\n *\r\n * Os ouvintes devem ser funções formato \"function(...args: any[]): void\",\r\n * podendo ter 0 ou muitos argumentos passados no evento.\r\n */\r\nexport class EventBus {\r\n /**\r\n * @private\r\n * Coleção de ouvintes de todos os eventos pendurados.\r\n */\r\n listenersCollection = null;\r\n\r\n /**\r\n * Validador de nomes de eventos;\r\n * @readonly\r\n */\r\n eventNameValidator\r\n\r\n /**\r\n * Construtor base.\r\n * @param {Function} [eventNameValidator] Função validadora de nomes de eventos.\r\n */\r\n constructor({ eventNameValidator } = {}) {\r\n this.listenersCollection = {};\r\n this.eventNameValidator = eventNameValidator || emptyEventNameValidator;\r\n }\r\n\r\n /**\r\n * Adiciona um ouvinte a um evento.\r\n * @param {String} eventName Nome do evento.\r\n * @param {Function} fn Função ouvinte do evento.\r\n * @param {Any} [scope] Escopo de execução (this) para a função ouvinte.\r\n */\r\n on(eventName, fn, scope = null) {\r\n this.eventNameValidator(eventName);\r\n this.getListeners(eventName).push({\r\n fn,\r\n scope,\r\n });\r\n }\r\n\r\n /**\r\n * Adiciona ouvintes a eventos em um objeto de definições.\r\n * @param {Object} events Object de definições no formato { eventName: fn, ... }.\r\n * @param {Any} [scope] Escopo de execução (this) para a função ouvinte.\r\n */\r\n onEach(events, scope = null) {\r\n Object.keys(events).forEach(eventName => this.on(eventName, events[eventName], scope));\r\n }\r\n\r\n /**\r\n * Remove um ouvinte de um evento. As referências passadas aqui devem ser as mesmas\r\n * usadas para adicionar o ouvinte.\r\n * @param {String} eventName Nome do evento.\r\n * @param {Function} fn Função ouvinte do evento.\r\n * @param {Any} [scope] Escopo de execução (this) para a função ouvinte.\r\n */\r\n off(eventName, fn, scope = null) {\r\n const listeners = this.getListeners(eventName);\r\n const index = listeners.findIndex(listener => listener.fn === fn\r\n && listener.scope === scope);\r\n\r\n if (index === -1) {\r\n throw new Error(`Não é possível remover o ouvinte. Ouvinte não encontrado para o evento \"${\r\n eventName\r\n }\". Verifique a referência da função e do escopo.`);\r\n }\r\n\r\n listeners.splice(index, 1);\r\n if (!listeners.length) {\r\n this.clearListeners(eventName);\r\n }\r\n }\r\n\r\n /**\r\n * Emitir um evento através do barramento para todos os ouvintes.\r\n * @param {String} eventName Nome do evento.\r\n * @param {...any} [args] Argumentos do evento. Podem ser omitidos para um evento sem\r\n * parametros.\r\n */\r\n emit(eventName, ...args) {\r\n if (this.hasListenersConfig(eventName)) {\r\n this.getListeners(eventName)\r\n .forEach(listener => listener.fn.call(listener.scope, ...args));\r\n }\r\n }\r\n\r\n /**\r\n * Método privado para uso interno.\r\n * Retorna os ouvintes de um evento de maneira segura, evitando retornos nulos.\r\n * @private\r\n * @param {String} eventName Nome do evento.\r\n * @returns {Object[]} Array de listeners do Evento.\r\n */\r\n getListeners(eventName) {\r\n if (!this.hasListenersConfig(eventName)) {\r\n this.listenersCollection[eventName] = [];\r\n }\r\n return this.listenersCollection[eventName];\r\n }\r\n\r\n /**\r\n * Método privado para uso interno.\r\n * Informa se há configuração de listeners para um evento.\r\n * @private\r\n * @param {String} eventName Nome do evento.\r\n */\r\n hasListenersConfig(eventName) {\r\n return !!this.listenersCollection[eventName];\r\n }\r\n\r\n /**\r\n * Método privado para uso interno.\r\n * Limpa todos os ouvintes de um evento.\r\n * @private\r\n * @param {String} eventName Nome do evento.\r\n */\r\n clearListeners(eventName) {\r\n delete this.listenersCollection[eventName];\r\n }\r\n\r\n /**\r\n * Cria uma interface de procurador para um eventBus, expondo apenas os métodos relacionados\r\n * a observação, como On, Off, Emit, e etc.\r\n * @returns {Object}\r\n */\r\n createObservableProxy() {\r\n return {\r\n on: (...args) => this.on(...args),\r\n onEach: (...args) => this.onEach(...args),\r\n off: (...args) => this.off(...args),\r\n emit: (...args) => this.emit(...args),\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Barramento global de eventos.\r\n */\r\nexport default new EventBus({ eventNameValidator: validateNamespaceOneDepthLevel });\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"default-opacity-transition\",\"mode\":\"out-in\"}},[(_vm.loading)?_c('s-loader'):_c('router-view',{key:_vm.assetModule && _vm.assetModule.id,attrs:{\"asset\":_vm.currentAsset || {},\"asset-type\":_vm.currentAssetType,\"asset-module\":_vm.assetModule}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n \r\n \r\n \r\n\r\n\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!./EngineeringAsset.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!./EngineeringAsset.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EngineeringAsset.vue?vue&type=template&id=565665ef&\"\nimport script from \"./EngineeringAsset.vue?vue&type=script&lang=js&\"\nexport * from \"./EngineeringAsset.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"],"sourceRoot":""}