UNPKG

vuex-asr

Version:

* Version: 0.7.52 * License M.I.T. * [Online Documentation](https://vuex-asr.github.io/vuex-asr/) * author: Joris Wenting * email: vuex.asr@gmail.com * [linkedIn](https://www.linkedin.com/in/joriswenting/). * [contribute](https://vuex-asr.github.io/vuex-a

137 lines (113 loc) 3.44 kB
export default class Report { constructor(vueInstance) { // Initialize dependencies this.vueInstance = vueInstance; this.propsData = vueInstance.$options.propsData; this.componentNameKebabCase = this.vueInstance.$options._componentTag; this.componentVnodeTag = this.vueInstance._self.$vnode.tag; // Set an empty array for the messages that are going // to be pushed to the (Bus) instance of this class. this.messages = []; } // A message will be pushed to the messages array pushMessage( messageText, messageData = null, dataType = "object", messageFrom = "generic" ) { // Deep clone the send data let clonedData = null; switch (dataType) { case "object": case "{}": clonedData = Object.assign({}, messageData); break; case "array": case "[]": clonedData = Object.assign([], messageData); break; case "string": clonedData = messageData; break; } const messageObject = { messageText, messageFrom, clonedData }; this.messages.push(messageObject); } // Procedure for generating the report generateReport() { this.htmlTag = this.createHTMLTag( this.componentNameKebabCase, this.propsData ); this.createConsoleLogHeader( this.vueInstance, this.htmlTag, this.componentVnodeTag, this.propsData ); this.consoleGrouper(this.messages, false); } // Helper function to group messages consoleGrouper(messages = []) { console.group("Report Messages:"); messages.forEach(message => { console.groupCollapsed(message.messageText); this.renderMessage(message); console.groupEnd(); }); console.groupEnd(); } // In the header we create a html tag string // for console UI purposes. createHTMLTag(componentTag, propsData) { const asrBindStateString = propsData.asrBindState ? `\nasr-bind-state="${propsData.asrBindState}"` : ""; const asrBindGettersString = propsData.asrBindGetters ? `\nasr-bind-getters="${propsData.asrBindGetters}"` : ""; const asrBindMutationsString = propsData.asrBindMutations ? `\nasr-bind-mutations="${propsData.asrBindMutations}"` : ""; const asrBindActionsString = propsData.asrBindActions ? `\nasr-bind-actions="${propsData.asrBindActions}"` : ""; const asrBindConfigString = propsData.asrBindConfig ? `\nasr-bind-config="${propsData.asrBindConfig}"` : ""; const string = `<${componentTag} ` + `${asrBindStateString} ` + `${asrBindGettersString} ` + `${asrBindMutationsString} ` + `${asrBindActionsString} ` + `${asrBindConfigString}` + `/>`; // + // `</${componentTag}>`; return string; } // Create a header for the report createConsoleLogHeader(vueInstance, htmlTag) { console.log( `%cVUEX - ASR debug\n%c${htmlTag}`, "color: green; font-size: 16px; padding: 8px 0px", "color: green; font-size: 12px; padding: 6px 6px" ); } // Helper for rendering a message and it's data renderMessage(message) { // console.log(`%cMessage: ${message.messageText}`); if (message.messageFrom) { console.log(`from: ${message.messageFrom}`); } if (message.clonedData) { console.log(message.clonedData); } } }