mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Merge pull request #15271 from guerler/fix_form_builder
Fix form builder in admin panel
This commit is contained in:
@@ -247,12 +247,14 @@ export var Upload = Backbone.View.extend({
|
||||
return this;
|
||||
},
|
||||
_readFile: function (e) {
|
||||
var self = this;
|
||||
var file = e.target.files && e.target.files[0];
|
||||
if (file) {
|
||||
var reader = new FileReader();
|
||||
reader.onload = function () {
|
||||
self.model.set({ wait: false, value: this.result });
|
||||
reader.onload = () => {
|
||||
this.model.set({ wait: false, value: reader.result });
|
||||
if (this.model.get("onchange")) {
|
||||
this.model.get("onchange")(this.value());
|
||||
}
|
||||
};
|
||||
this.model.set({ wait: true, value: null });
|
||||
reader.readAsText(file);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import copy
|
||||
import csv
|
||||
import logging
|
||||
import re
|
||||
|
||||
@@ -122,7 +123,7 @@ class Forms(BaseUIController):
|
||||
{
|
||||
"name": "type",
|
||||
"type": "select",
|
||||
"options": [("None", "none")] + [(ft[1], ft[1]) for ft in fd_types],
|
||||
"options": [(ft[1], ft[1]) for ft in fd_types],
|
||||
"label": "Type",
|
||||
},
|
||||
{
|
||||
@@ -130,6 +131,7 @@ class Forms(BaseUIController):
|
||||
"label": "Import from CSV",
|
||||
"type": "upload",
|
||||
"help": "Import fields from CSV-file with the following format: Label, Help, Type, Value, Options, Required=True/False.",
|
||||
"optional": True,
|
||||
},
|
||||
],
|
||||
}
|
||||
@@ -139,16 +141,18 @@ class Forms(BaseUIController):
|
||||
index = 0
|
||||
if csv_file:
|
||||
lines = csv_file.splitlines()
|
||||
for line in lines:
|
||||
row = line.split(",")
|
||||
rows = csv.reader(lines)
|
||||
for row in rows:
|
||||
if len(row) >= 6:
|
||||
for column in range(len(row)):
|
||||
row[column] = str(row[column]).strip('"')
|
||||
prefix = "fields_%i|" % index
|
||||
payload[f"{prefix}name"] = "%i_imported_field" % (index + 1)
|
||||
payload[f"{prefix}label"] = row[0]
|
||||
payload[f"{prefix}helptext"] = row[1]
|
||||
payload[f"{prefix}type"] = row[2]
|
||||
payload[f"{prefix}default"] = row[3]
|
||||
payload[f"{prefix}selectlist"] = row[4].split(",")
|
||||
payload[f"{prefix}selectlist"] = row[4]
|
||||
payload[f"{prefix}required"] = row[5].lower() == "true"
|
||||
index = index + 1
|
||||
new_form, message = self.save_form_definition(trans, None, payload)
|
||||
@@ -168,9 +172,7 @@ class Forms(BaseUIController):
|
||||
latest_form = form.latest_form
|
||||
if trans.request.method == "GET":
|
||||
fd_types = sorted(trans.app.model.FormDefinition.types.__members__.items())
|
||||
ff_types = [
|
||||
(t.__name__.replace("Field", ""), t.__name__) for t in trans.model.FormDefinition.supported_field_types
|
||||
]
|
||||
ff_types = [(t.__name__, t.__name__) for t in trans.model.FormDefinition.supported_field_types]
|
||||
field_cache = []
|
||||
field_inputs = [
|
||||
{
|
||||
@@ -188,7 +190,7 @@ class Forms(BaseUIController):
|
||||
"label": "Options",
|
||||
"help": "*Only for fields which allow multiple selections, provide comma-separated values.",
|
||||
},
|
||||
{"name": "required", "label": "Required", "type": "boolean"},
|
||||
{"name": "required", "label": "Required", "type": "boolean", "value": False},
|
||||
]
|
||||
form_dict = {
|
||||
"title": "Edit form for '%s'" % (util.sanitize_text(latest_form.name)),
|
||||
@@ -198,7 +200,7 @@ class Forms(BaseUIController):
|
||||
{
|
||||
"name": "type",
|
||||
"type": "select",
|
||||
"options": [("None", "none")] + [(ft[1], ft[1]) for ft in fd_types],
|
||||
"options": [(ft[1], ft[1]) for ft in fd_types],
|
||||
"label": "Type",
|
||||
"value": latest_form.type,
|
||||
},
|
||||
@@ -244,7 +246,6 @@ class Forms(BaseUIController):
|
||||
field_attributes = ["name", "label", "helptext", "required", "type", "selectlist", "default"]
|
||||
field_dict = {attr: payload.get(f"{prefix}{attr}") for attr in field_attributes}
|
||||
field_dict["visible"] = True
|
||||
field_dict["required"] = field_dict["required"] == "true"
|
||||
if isinstance(field_dict["selectlist"], str):
|
||||
field_dict["selectlist"] = field_dict["selectlist"].split(",")
|
||||
else:
|
||||
@@ -281,7 +282,7 @@ class Forms(BaseUIController):
|
||||
desc=current_form["desc"],
|
||||
fields=current_form["fields"],
|
||||
form_definition_current=None,
|
||||
form_type=current_form["type"],
|
||||
type=current_form["type"],
|
||||
layout=current_form["layout"],
|
||||
)
|
||||
# save changes to the existing form
|
||||
|
||||
Reference in New Issue
Block a user