{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-stable/src/components/widgets/lively-mle-sql-editor.js"],"names":["Morph","SocketSingleton","paintResult","r","t","resolve","LivelyMleSqlEditor","initialize","registerButtons","getAttribute","get","onExecuteButton","sql","onResetButton","reset","socket","v","result","m","status","e","appendChild","showError","loading","livelyPrepareSave","setAttribute","livelyPreMigrate","livelyMigrate","other","livelyInspect","contentNode","inspector","livelyExample"],"mappings":"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","file":"lively-mle-sql-editor.js","sourcesContent":["\"enable aexpr\";\n\nimport Morph from 'src/components/widgets/lively-morph.js';\nimport {SocketSingleton} from 'src/components/mle/socket.js';\n\nfunction paintResult(r){\n  if(r.rows){\n    return <lively-mle-table-viewer />.then(t => {\n      t.inputVisible = false;\n      t.data = r;\n      return t;\n    })\n  }\n  return Promise.resolve(<div class=\"notification is-success\">Your query affected {r.rowsAffected} rows.</div>);\n}\n\nexport default class LivelyMleSqlEditor extends Morph {\n  async initialize() {\n    this.initialized = false;\n    this.windowTitle = \"MLE SQL Editor\";\n    this.registerButtons();\n    this.err = !(this.getAttribute(\"showError\") === \"false\");\n    if(!(this.getAttribute(\"initSocket\") === \"false\")) this.socket = await SocketSingleton.get();\n  }\n  \n  onExecuteButton(){\n    this.loading = true;\n    this.socket.emit('executeSQL', {\n      sql: this.shadowRoot.getElementById(\"sql\").value\n    });\n  }\n  \n  async onResetButton(){\n    this.loading = true;\n    this.socket = await SocketSingleton.reset();\n    this.loading = false;\n  }\n  \n  set socket(v){\n    this.socket = v;\n    const result = this.shadowRoot.getElementById(\"result\");\n    this.socket.on('failure', m => {\n      this.loading = false;\n      if(this.err){\n        result.innerHTML = m;\n        result.className = \"notification is-danger\";\n      }\n    })\n    this.socket.on('busy', m => {\n      this.loading = false;\n    });\n    this.socket.on('result', (r, status) => {\n      if(status=== \"executed\"){\n        result.innerHTML = \"\"\n        this.loading = false;\n        paintResult(r).then(e => result.appendChild(e));\n      }\n    });\n  }\n  \n  set showError(v){\n    this.err =v;\n  }\n  \n  set loading(v){\n    this.shadowRoot.getElementById(\"sql\").disabled = v;\n    this.shadowRoot.getElementById(\"executeButton\").disabled = v;\n    this.shadowRoot.getElementById(\"result\").className = \"\"\n    this.shadowRoot.getElementById(\"executeButton\").className = `button is-link ${v ? \"is-loading\" : \"\"}`;\n    this.shadowRoot.getElementById(\"resetButton\").disabled = v;\n    this.shadowRoot.getElementById(\"resetButton\").className = `button is-warning ${v ? \"is-loading\" : \"\"}`;\n  }\n  \n  /* Lively-specific API */\n\n  // store something that would be lost\n  livelyPrepareSave() {\n    this.setAttribute(\"data-mydata\", this.get(\"#textField\").value)\n  }\n  \n  livelyPreMigrate() {\n    // is called on the old object before the migration\n  }\n  \n  livelyMigrate(other) {\n    // whenever a component is replaced with a newer version during development\n    // this method is called on the new object during migration, but before initialization\n    this.someJavaScriptProperty = other.someJavaScriptProperty\n  }\n  \n  livelyInspect(contentNode, inspector) {\n    // do nothing\n  }\n  \n  async livelyExample() {\n    // this customizes a default instance to a pretty example\n    // this is used by the \n    this.style.backgroundColor = \"lightgray\"\n    this.someJavaScriptProperty = 42\n  }\n  \n  \n}"]}