names are now a property and can be chosen arbitrarily
This commit is contained in:
@@ -86,7 +86,6 @@ export default {
|
||||
return {
|
||||
model: this.object.model, // string is fine
|
||||
id: this.object.id,
|
||||
name: this.name,
|
||||
values,
|
||||
relations,
|
||||
};
|
||||
@@ -140,13 +139,6 @@ export default {
|
||||
<p><input type="button" value="Save" @click="trySave"></p>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th><label for="field-name">Name</label></th>
|
||||
<td>
|
||||
<input type="text" id="field-name" v-model="name">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<edit-property v-for="(property, pi) in properties" :model="property" :values="values[property.id]" :key="pi"></edit-property>
|
||||
</table>
|
||||
|
||||
|
||||
@@ -39,17 +39,12 @@ export default {
|
||||
haveRelations: !isEmpty(relations),
|
||||
model_names,
|
||||
values,
|
||||
name: '',
|
||||
relationRefs: [],
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/** Get values in the raw format without grouping */
|
||||
collectData() {
|
||||
if (isEmpty(this.name)) {
|
||||
throw new Error("Name is required");
|
||||
}
|
||||
|
||||
let values = [];
|
||||
forEach(objCopy(this.values), (vv, prop_model_id) => {
|
||||
for (let v of vv) {
|
||||
@@ -73,7 +68,6 @@ export default {
|
||||
|
||||
return {
|
||||
model: this.model.id,
|
||||
name: this.name,
|
||||
values,
|
||||
relations,
|
||||
};
|
||||
@@ -127,13 +121,6 @@ export default {
|
||||
<p><input type="button" value="Save" @click="trySave"></p>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th><label for="field-name">Name</label></th>
|
||||
<td>
|
||||
<input type="text" id="field-name" v-model="name">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<property v-for="(property, pi) in properties" :model="property" :values="values[property.id]" :key="pi"></property>
|
||||
</table>
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -13,8 +13,13 @@ Define object
|
||||
<h1>Define new object model</h1>
|
||||
|
||||
<form action="/model/object/create" method="POST">
|
||||
<label for="name">Name:</label>
|
||||
<input type="text" id="name" name="name" value="{{old.name}}" autocomplete="off"><br>
|
||||
<table>
|
||||
<tr>
|
||||
<th><label for="name">Name:</label></th>
|
||||
<td><input type="text" id="name" name="name" value="{{old.name}}" autocomplete="off">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<input type="submit" value="Save">
|
||||
</form>
|
||||
|
||||
@@ -13,8 +13,24 @@ Edit object model
|
||||
<h1>Edit object model {{ model.name }}</h1>
|
||||
|
||||
<form action="/model/object/update/{{ model.id }}" method="POST">
|
||||
<label for="name">Name:</label>
|
||||
<input type="text" id="name" name="name" value="{{ model.name }}" autocomplete="off"><br>
|
||||
<table>
|
||||
<tr>
|
||||
<th><label for="name">Name:</label></th>
|
||||
<td><input type="text" id="name" name="name" value="{{ model.name }}" autocomplete="off">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><label for="name_property">Name property:</label></th>
|
||||
<td>
|
||||
<select name="name_property" id="name_property" autocomplete="off">
|
||||
<option value=""></option>
|
||||
{% for p in properties %}
|
||||
<option value="{{ p.id }}" {{selected(val=old.name_property, opt=p.id)}}>{{ p.name }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<input type="submit" value="Save">
|
||||
</form>
|
||||
|
||||
@@ -16,28 +16,55 @@ Define property
|
||||
<form action="/model/property/create" method="POST">
|
||||
<input type="hidden" name="object" value="{{object.id}}">
|
||||
|
||||
<label for="name">Name:</label>
|
||||
<input type="text" id="name" name="name" value="{{old.name}}" autocomplete="off"><br>
|
||||
|
||||
<label for="optional">Optional:</label>
|
||||
<input type="checkbox" name="optional" id="optional" value="true" {{opt(checked=old.optional)}} autocomplete="off">
|
||||
<br>
|
||||
|
||||
<label for="multiple">Multiple:</label>
|
||||
<input type="checkbox" name="multiple" id="multiple" value="true" {{opt(checked=old.multiple)}} autocomplete="off"><br>
|
||||
|
||||
<label for="data_type">Type:</label>
|
||||
<select name="data_type" id="data_type" autocomplete="off">
|
||||
<option value="String" {{selected(opt="String",val=old.data_type)}}>String</option>
|
||||
<option value="Integer" {{selected(opt="Integer",val=old.data_type)}}>Integer</option>
|
||||
<option value="Decimal" {{selected(opt="Decimal",val=old.data_type)}}>Decimal</option>
|
||||
<option value="Boolean" {{selected(opt="Boolean",val=old.data_type)}}>Boolean</option>
|
||||
</select><br>
|
||||
|
||||
<label for="default">Default:</label>
|
||||
<input type="text" id="default" name="default" value="{{old.default}}" autocomplete="off"><br>
|
||||
<table>
|
||||
<tr>
|
||||
<th><label for="name">Name:</label></th>
|
||||
<td><input type="text" id="name" name="name" value="{{old.name}}" autocomplete="off"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><label for="unique">Unique:</label></th>
|
||||
<td><input type="checkbox" name="unique" id="unique" value="true" {{opt(checked=old.unique)}} autocomplete="off"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><label for="optional">Optional:</label></th>
|
||||
<td><input type="checkbox" name="optional" id="optional" value="true" {{opt(checked=old.optional)}} autocomplete="off"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><label for="multiple">Multiple:</label></th>
|
||||
<td><input type="checkbox" name="multiple" id="multiple" value="true" {{opt(checked=old.multiple)}} autocomplete="off"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><label for="data_type">Type:</label></th>
|
||||
<td>
|
||||
<select name="data_type" id="data_type" autocomplete="off">
|
||||
<option value="String" {{selected(opt="String",val=old.data_type)}}>String</option>
|
||||
<option value="Integer" {{selected(opt="Integer",val=old.data_type)}}>Integer</option>
|
||||
<option value="Decimal" {{selected(opt="Decimal",val=old.data_type)}}>Decimal</option>
|
||||
<option value="Boolean" {{selected(opt="Boolean",val=old.data_type)}}>Boolean</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><label for="default">Default:</label></th>
|
||||
<td><input type="text" id="default" name="default" value="{{old.default}}" autocomplete="off"></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<input type="submit" value="Save">
|
||||
</form>
|
||||
|
||||
<script>
|
||||
(function () {
|
||||
// multiple and unique are XORed. This is also enforced server-side
|
||||
let multiple = document.getElementById('multiple');
|
||||
let unique = document.getElementById('unique');
|
||||
unique.addEventListener('input', function () {
|
||||
multiple.checked &= !unique.checked;
|
||||
})
|
||||
multiple.addEventListener('input', function () {
|
||||
unique.checked &= !multiple.checked;
|
||||
})
|
||||
})();
|
||||
</script>
|
||||
|
||||
{%- endblock %}
|
||||
|
||||
@@ -13,28 +13,64 @@ Edit property
|
||||
<h1>Edit property {{model.name}}</h1>
|
||||
|
||||
<form action="/model/property/update/{{model.id}}" method="POST">
|
||||
<label for="name">Name:</label>
|
||||
<input type="text" id="name" name="name" value="{{model.name}}" autocomplete="off"><br>
|
||||
|
||||
<label for="optional">Optional:</label>
|
||||
<input type="checkbox" name="optional" id="optional" value="true" {{opt(checked=model.optional)}} autocomplete="off">
|
||||
<br>
|
||||
|
||||
<label for="multiple">Multiple:</label>
|
||||
<input type="checkbox" name="multiple" id="multiple" value="true" {{opt(checked=model.multiple)}} autocomplete="off"><br>
|
||||
|
||||
<label for="data_type">Type:</label>
|
||||
<select name="data_type" id="data_type" autocomplete="off">
|
||||
<option value="String" {{selected(val=model.data_type, opt="String")}}>String</option>
|
||||
<option value="Integer" {{selected(val=model.data_type, opt="Integer")}}>Integer</option>
|
||||
<option value="Decimal" {{selected(val=model.data_type, opt="Decimal")}}>Decimal</option>
|
||||
<option value="Boolean" {{selected(val=model.data_type, opt="Boolean")}}>Boolean</option>
|
||||
</select><br>
|
||||
|
||||
<label for="default">Default:</label>
|
||||
<input type="text" id="default" name="default" value="{{model.default | print_typed_value}}" autocomplete="off"><br>
|
||||
<table>
|
||||
<tr>
|
||||
<th><label for="name">Name:</label></th>
|
||||
<td><input type="text" id="name" name="name" value="{{model.name}}" autocomplete="off"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><label for="unique">Unique:</label></th>
|
||||
<td>
|
||||
<input type="checkbox" name="unique" id="unique" value="true" {{opt(checked=model.unique)}} autocomplete="off">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><label for="optional">Optional:</label></th>
|
||||
<td>
|
||||
<input type="checkbox" name="optional" id="optional" value="true" {{opt(checked=model.optional)}} autocomplete="off">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><label for="multiple">Multiple:</label></th>
|
||||
<td>
|
||||
<input type="checkbox" name="multiple" id="multiple" value="true" {{opt(checked=model.multiple)}} autocomplete="off">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><label for="data_type">Type:</label></th>
|
||||
<td>
|
||||
<select name="data_type" id="data_type" autocomplete="off">
|
||||
<option value="String" {{selected(val=model.data_type, opt="String")}}>String</option>
|
||||
<option value="Integer" {{selected(val=model.data_type, opt="Integer")}}>Integer</option>
|
||||
<option value="Decimal" {{selected(val=model.data_type, opt="Decimal")}}>Decimal</option>
|
||||
<option value="Boolean" {{selected(val=model.data_type, opt="Boolean")}}>Boolean</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><label for="default">Default:</label></th>
|
||||
<td>
|
||||
<input type="text" id="default" name="default" value="{{model.default | print_typed_value}}" autocomplete="off">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<input type="submit" value="Save">
|
||||
</form>
|
||||
|
||||
<script>
|
||||
(function () {
|
||||
// multiple and unique are XORed. This is also enforced server-side
|
||||
let multiple = document.getElementById('multiple');
|
||||
let unique = document.getElementById('unique');
|
||||
unique.addEventListener('input', function () {
|
||||
multiple.checked &= !unique.checked;
|
||||
})
|
||||
multiple.addEventListener('input', function () {
|
||||
unique.checked &= !multiple.checked;
|
||||
})
|
||||
})();
|
||||
</script>
|
||||
|
||||
{%- endblock %}
|
||||
|
||||
@@ -15,25 +15,42 @@ Define relation
|
||||
<form action="/model/relation/create" method="POST">
|
||||
<input type="hidden" name="object" value="{{object.id}}">
|
||||
|
||||
<label for="name">Name:</label>
|
||||
<input type="text" id="name" name="name" value="{{old.name}}" autocomplete="off"><br>
|
||||
|
||||
<label for="reciprocal_name">Reciprocal name:</label>
|
||||
<input type="text" id="reciprocal_name" name="reciprocal_name" value="{{old.reciprocal_name}}" autocomplete="off"><br>
|
||||
|
||||
<label for="optional">Optional:</label>
|
||||
<input type="checkbox" name="optional" id="optional" value="true" {{opt(checked=old.optional)}} autocomplete="off">
|
||||
<br>
|
||||
|
||||
<label for="multiple">Multiple:</label>
|
||||
<input type="checkbox" name="multiple" id="multiple" value="true" {{opt(checked=old.multiple)}} autocomplete="off"><br>
|
||||
|
||||
<label for="related">Related object:</label>
|
||||
<select name="related" id="related" autocomplete="off">
|
||||
{% for m in models %}
|
||||
<option value="{{ m.id }}" {{selected(val=old.related, opt=m.id)}}>{{ m.name }}</option>
|
||||
{% endfor %}
|
||||
</select><br>
|
||||
<table>
|
||||
<tr>
|
||||
<th><label for="name">Name:</label></th>
|
||||
<td>
|
||||
<input type="text" id="name" name="name" value="{{old.name}}" autocomplete="off"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><label for="reciprocal_name">Reciprocal name:</label></th>
|
||||
<td>
|
||||
<input type="text" id="reciprocal_name" name="reciprocal_name" value="{{old.reciprocal_name}}" autocomplete="off">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><label for="optional">Optional:</label></th>
|
||||
<td>
|
||||
<input type="checkbox" name="optional" id="optional" value="true" {{opt(checked=old.optional)}} autocomplete="off">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><label for="multiple">Multiple:</label></th>
|
||||
<td>
|
||||
<input type="checkbox" name="multiple" id="multiple" value="true" {{opt(checked=old.multiple)}} autocomplete="off">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><label for="related">Related object:</label></th>
|
||||
<td>
|
||||
<select name="related" id="related" autocomplete="off">
|
||||
{% for m in models %}
|
||||
<option value="{{ m.id }}" {{selected(val=old.related, opt=m.id)}}>{{ m.name }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<input type="submit" value="Save">
|
||||
</form>
|
||||
|
||||
@@ -13,18 +13,29 @@ Edit relation
|
||||
<h1>Edit relation model "{{model.name}}"</h1>
|
||||
|
||||
<form action="/model/relation/update/{{model.id}}" method="POST">
|
||||
<label for="name">Name:</label>
|
||||
<input type="text" id="name" name="name" value="{{model.name}}" autocomplete="off"><br>
|
||||
|
||||
<label for="reciprocal_name">Reciprocal name:</label>
|
||||
<input type="text" id="reciprocal_name" name="reciprocal_name" value="{{model.reciprocal_name}}" autocomplete="off"><br>
|
||||
|
||||
<label for="optional">Optional:</label>
|
||||
<input type="checkbox" name="optional" id="optional" value="true" {{opt(checked=model.optional)}} autocomplete="off">
|
||||
<br>
|
||||
|
||||
<label for="multiple">Multiple:</label>
|
||||
<input type="checkbox" name="multiple" id="multiple" value="true" {{opt(checked=model.multiple)}} autocomplete="off"><br>
|
||||
<table>
|
||||
<tr>
|
||||
<th><label for="name">Name:</label></th>
|
||||
<td><input type="text" id="name" name="name" value="{{model.name}}" autocomplete="off">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><label for="reciprocal_name">Reciprocal name:</label></th>
|
||||
<td><input type="text" id="reciprocal_name" name="reciprocal_name" value="{{model.reciprocal_name}}" autocomplete="off">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><label for="optional">Optional:</label>
|
||||
</th>
|
||||
<td><input type="checkbox" name="optional" id="optional" value="true" {{opt(checked=model.optional)}} autocomplete="off">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><label for="multiple">Multiple:</label></th>
|
||||
<td><input type="checkbox" name="multiple" id="multiple" value="true" {{opt(checked=model.multiple)}} autocomplete="off">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>The related object cannot be changed. Create a new relation if needed.</p>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user