0
0
Fork 1
Spiegel von https://github.com/paviliondev/discourse-custom-wizard.git synchronisiert 2024-11-09 20:02:54 +01:00

WIP: Edit Columns modal functionality

Currently modal and edit columns works but removes only field and not corresponding submission.
Dieser Commit ist enthalten in:
Keegan George 2021-08-30 16:33:48 -07:00
Ursprung d74d3d25be
Commit 0bc151fc7b
5 geänderte Dateien mit 87 neuen und 16 gelöschten Zeilen

Datei anzeigen

@ -0,0 +1,16 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
export default Controller.extend(ModalFunctionality, {
actions: {
save() {
this.send("closeModal");
},
resetToDefault() {
this.get('model.fields').forEach(field => {
field.set("enabled", true);
});
}
}
});

Datei anzeigen

@ -2,6 +2,9 @@ import Controller from "@ember/controller";
import { fmt } from "discourse/lib/computed";
import { empty } from "@ember/object/computed";
import CustomWizard from "../models/custom-wizard";
import showModal from "discourse/lib/show-modal";
import discourseComputed from "discourse-common/utils/decorators";
export default Controller.extend({
downloadUrl: fmt("wizard.id", "/admin/wizards/submissions/%@/download"),
@ -31,8 +34,11 @@ export default Controller.extend({
return submissions.map(submission => {
let field = fields.find(f => Object.keys(submission).includes(f.id));
if (!field.enabled) {
submission.delete(field.id);
};
// insert field / submission deletion code here:
console.log(field, "is not enabled for ", submission);
} else if (field.enabled) {
console.log(field, "is enabled for ", submission);
}
return submission;
});
},
@ -44,5 +50,14 @@ export default Controller.extend({
this.loadMoreSubmissions();
}
},
showEditColumnsModal() {
const controller = showModal("admin-wizards-submissions-columns", {
model: {
fields: this.get('fields'),
submissions: this.get('submissions')
}
});
},
},
});

Datei anzeigen

@ -224,31 +224,33 @@ CustomWizard.reopenClass({
})
.then((result) => {
if (result.wizard) {
let fields = ["username"];
console.log(result);
let fields = [{ id: "username", label: "User"}];
let submissions = [];
let wizard = result.wizard;
let total = result.total;
result.submissions.forEach((s) => {
let submission = {
username: s.username,
username: s.user,
};
Object.keys(s.fields).forEach((f) => {
if (fields.indexOf(f) < 0) {
fields.push(f);
}
if (fields.includes(f)) {
submission[f] = s.fields[f];
Object.keys(s.fields).forEach((fieldId) => {
if (!fields.some(field => field.id === fieldId)) {
fields.push({ id: fieldId, label: s.fields[fieldId].label });
}
submission[fieldId] = s.fields[fieldId];
});
submission["submitted_at"] = s.submitted_at;
submissions.push(submission);
});
fields.push("submitted_at");
let submittedAt = {
id: "submitted_at",
label: "Submitted At"
}
fields.push(submittedAt);
return {
wizard,

Datei anzeigen

@ -1,6 +1,7 @@
import CustomWizard from "../models/custom-wizard";
import DiscourseRoute from "discourse/routes/discourse";
import { A } from "@ember/array";
import EmberObject from "@ember/object";
import DiscourseRoute from "discourse/routes/discourse";
import CustomWizard from "../models/custom-wizard";
export default DiscourseRoute.extend({
model(params) {
@ -8,9 +9,14 @@ export default DiscourseRoute.extend({
},
setupController(controller, model) {
const fields = model.fields.map((f) => {
const fieldsObject = EmberObject.create(f);
fieldsObject.enabled = true;
return fieldsObject;
});
controller.setProperties({
wizard: model.wizard,
fields: model.fields,
fields: A(fields),
submissions: A(model.submissions),
total: model.total,
});

Datei anzeigen

@ -0,0 +1,32 @@
{{#d-modal-body title="directory.edit_columns.title"}}
{{#if loading}}
{{loading-spinner size="large"}}
{{else}}
<div class="edit-directory-columns-container">
{{#each model.fields as |field|}}
<div class="edit-directory-column">
<div class="left-content">
<label class="column-name">
{{input type="checkbox" checked=field.enabled}}
{{directory-table-header-title field=field.label translated=true}}
</label>
</div>
</div>
{{/each}}
</div>
{{/if}}
{{/d-modal-body}}
<div class="modal-footer">
{{d-button
class="btn-primary"
label="directory.edit_columns.save"
action=(action "save")
}}
{{d-button
class="btn-secondary reset-to-default"
label="directory.edit_columns.reset_to_default"
action=(action "resetToDefault")
}}
</div>