{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-stable/src/components/tools/lively-analysis-table.js"],"names":["d3","ContextMenu","Morph","LivelyAnalysisTable","initialize","windowTitle","registerButtons","lively","html","registerKeys","tableElement","shadowRoot","querySelector","selectElement","selectedOption","addEventListener","onSelectionChanged","setWidth","setHeight","width","tableWidth","style","height","tableHeight","setData","data","getData","updateViz","innerHTML","table","select","tableHeadColumns","length","Object","keys","append","selectAll","enter","text","item","tableRows","attr","row","id","status","type","on","event","shiftKey","stopPropagation","preventDefault","menu","openBrowser","openIn","document","body","values","cellValue","selection","node","value","onKeyDown","evt","notify","charCode","livelyPreMigrate","livelyMigrate","other","someJavaScriptProperty","livelyInspect","contentNode","inspector","livelyPrepareSave","livelyExample","exampleData","no","column"],"mappings":"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","file":"lively-analysis-table.js","sourcesContent":["import d3 from \"src/external/d3.v5.js\"\nimport ContextMenu from 'src/client/contextmenu.js';\n//import D3Component from \"src/components/d3/d3-component.js\"\nimport Morph from 'src/components/widgets/lively-morph.js';\n\n//export default class LivelyAnalysisTable extends D3Component {\nexport default class LivelyAnalysisTable extends Morph {\n\n  async initialize() {\n    this.windowTitle = \"Lively Semantic Code Analysis - Table\"; \n    this.registerButtons()\n    lively.html.registerKeys(this); // automatically installs handler for some methods\n   \n    this.tableElement = this.shadowRoot.querySelector(\"#lively-analysis-table\")\n    this.selectElement = this.shadowRoot.querySelector('#lively-analysis-table-selection')\n    this.selectedOption = this.selectElement\n    \n    this.selectElement.addEventListener(\"change\", () => this.onSelectionChanged())\n    \n    this.setWidth(400)\n    this.setHeight(150)\n  }\n  \n  setWidth(width) {\n    this.tableWidth = width\n    this.tableElement.style.width = width + 'px'\n  }\n  \n  setHeight(height) {\n    this.tableHeight = height\n    this.tableElement.style.height = height + 'px'\n  }\n  \n  setData(data) {\n    if (data) {\n      this.data = data\n    }\n  }\n  \n  getData() {\n    return this.data\n  }\n  \n  updateViz() {\n    this.tableElement.innerHTML = ''\n    var table = d3.select(this.tableElement) \n             \n    // header\n    var tableHeadColumns = (this.getData() && this.getData().length > 0) ? Object.keys(this.getData()[0]) : []\n    table.append('thead')\n            .selectAll('th')\n            .data(tableHeadColumns)\n            .enter()\n            .append('th')\n            .text(function(item) { return item })\n  // body\n   var tableRows = table.append('tbody')\n            .selectAll(\"tr\") // rows\n            .data(this.getData())\n            .enter()\n            .append(\"tr\")\n            .attr(\"id\", function(row) { return !row.id ?  \"\" : row.id} )\n            .attr(\"class\", function(row) { return (row.status == \"alive\") ? row.type + \" aliveLink\" : row.type + \" brokenLink\"})\n            .on('contextmenu', function(row) {\n               if (!d3.event.shiftKey) {\n                d3.event.stopPropagation();\n                d3.event.preventDefault();\n                var menu = new ContextMenu(this, [\n                      [\"Open file\", () => lively.openBrowser(row.id, true)],\n                    ]);\n                menu.openIn(document.body, d3.event, this);\n                return true;\n               }\n            });\n           \n   tableRows.selectAll('td') // cells\n      .data(function(row) {return Object.values(row)})\n            .enter()\n            .append(\"td\")\n            .text(function(cellValue) {return cellValue});\n    \n  }\n  \n  onSelectionChanged() {\n    let selection = d3.select(this.selectElement)\n    let table = d3.select(this.tableElement)\n    this.selectedOption = selection.node().value\n    \n    if (this.selectedOption == 'view-broken-links') {\n      table.selectAll('.aliveLink')\n        .style('display', 'none')\n      table.selectAll('.brokenLink')\n        .style('display', 'table-row')\n    } else if (this.selectedOption == 'view-all-links') {\n      table.selectAll('tbody tr')\n        .style('display', 'table-row')\n    }\n  }\n   \n  // this method is autmatically registered through the ``registerKeys`` method \n  onKeyDown(evt) {\n    lively.notify(\"Key Down!\" + evt.charCode)\n  }\n\n  /* Lively-specific API */\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  livelyPrepareSave() {\n    \n  }\n  \n  async livelyExample() {\n    var exampleData = [\n      {id: \"\", no: \"1\", status: \"broken\", column: \"1.2 value\"},\n      {id: \"\", no: \"2\", status: \"broken\", column: \"2.2 value\"},\n      {id: \"\", no: \"3\", status: \"alive\",column: \"3.2 value\"},\n    ]\n    this.setData(exampleData)\n    this.updateViz()\n  }\n  \n\n}"]}