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:
Ursprung
d74d3d25be
Commit
0bc151fc7b
5 geänderte Dateien mit 87 neuen und 16 gelöschten Zeilen
|
@ -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);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
|
@ -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')
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
});
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
});
|
||||
|
|
|
@ -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>
|
Laden …
In neuem Issue referenzieren