diff --git a/javascripts/discourse/api-initializers/table-editor.js b/javascripts/discourse/api-initializers/table-editor.js index 2eaf219..76574e7 100644 --- a/javascripts/discourse/api-initializers/table-editor.js +++ b/javascripts/discourse/api-initializers/table-editor.js @@ -4,7 +4,8 @@ import { schedule } from "@ember/runloop"; import I18n from "I18n"; import { iconNode } from "discourse-common/lib/icon-library"; import { create } from "virtual-dom"; - +import { ajax } from "discourse/lib/ajax"; +import { popupAjaxError } from "discourse/lib/ajax-error"; export default apiInitializer("0.11.1", (api) => { const site = api.container.lookup("site:main"); const currentUser = api.getCurrentUser(); @@ -31,12 +32,16 @@ export default apiInitializer("0.11.1", (api) => { const table = event.target.parentNode.lastElementChild; const tempTable = table.cloneNode(true); - showModal("table-editor-modal", { - model: this, - }).setProperties({ - tableHtml: tempTable, - submitOnEnter: false, - }); + return ajax(`/posts/${this.id}`, { type: "GET" }) + .then((post) => { + showModal("table-editor-modal", { + model: post, + }).setProperties({ + tableHtml: tempTable, + submitOnEnter: false, + }); + }) + .catch(popupAjaxError); } function generatePopups(tables, attrs) { diff --git a/javascripts/discourse/components/spreadsheet-editor.js b/javascripts/discourse/components/spreadsheet-editor.js index 92b9fd0..407c5f1 100644 --- a/javascripts/discourse/components/spreadsheet-editor.js +++ b/javascripts/discourse/components/spreadsheet-editor.js @@ -3,9 +3,12 @@ import { action } from "@ember/object"; import loadScript from "discourse/lib/load-script"; import { arrayToTable, tableToObj } from "../lib/utilities"; import Component from "@ember/component"; +import { ajax } from "discourse/lib/ajax"; +import { popupAjaxError } from "discourse/lib/ajax-error"; export default Component.extend({ tagName: "", + showEditReason: false, didInsertElement() { this._super(...arguments); @@ -25,7 +28,7 @@ export default Component.extend({ const tableObject = tableToObj(table); const headings = []; const tableData = []; - console.log(this.model.id); + tableObject.forEach((object) => { // Build Headings if (!headings.includes(...Object.keys(object))) { @@ -55,6 +58,15 @@ export default Component.extend({ console.log("Original Data:", originalData); }, + @action + showEditReasonField() { + if (this.showEditReason) { + return this.set("showEditReason", false); + } else { + return this.set("showEditReason", true); + } + }, + @action cancelTableEdit() { this.triggerModalClose(); @@ -67,7 +79,28 @@ export default Component.extend({ const updatedData = this.spreadsheet.getData(); // values const markdownTable = this.buildTableMarkdown(updatedHeaders, updatedData); - this.triggerModalClose(); + const postId = this.model.id; + const newRaw = markdownTable; + const editReason = + this.get("editReason") || "Update Table with Table Editor"; + + this.updateTable(postId, newRaw, editReason); + }, + + updateTable(postId, raw, edit_reason) { + return ajax(`/posts/${postId}.json`, { + type: "PUT", + data: { + post: { + raw, + edit_reason, + }, + }, + }) + .catch(popupAjaxError) + .finally(() => { + this.triggerModalClose(); + }); }, buildTableMarkdown(headers, data) { diff --git a/javascripts/discourse/templates/components/spreadsheet-editor.hbs b/javascripts/discourse/templates/components/spreadsheet-editor.hbs index c8108a0..96c023c 100644 --- a/javascripts/discourse/templates/components/spreadsheet-editor.hbs +++ b/javascripts/discourse/templates/components/spreadsheet-editor.hbs @@ -2,9 +2,26 @@ @title={{theme-prefix "discourse_table_builder.edit.modal.title"}} @class="table-editor-modal" > - {{! TODO: Parse .md to json and fill table }} -
+