I've added my example, I'm adding a field in the Store, but it doesn't load the field. According to the documentation it would merge the fields, but apparently it is not happening.
// import Button from '../../lib/Core/widget/Button.js';
// import TextField from '../../lib/Core/widget/TextField.js';
// import Container from '../../lib/Core/widget/Container.js';
// import Model from '../../lib/Core/data/Model.js';
// import Store from '../../lib/Core/data/Store.js';
// import ModelDataField from '../../lib/Core/data/field/ModelDataField.js';
// import ObjectDataField from '../../lib/Core/data/field/ObjectDataField.js';
console.clear();
ModelDataField.prototype.isEqual = function(first, second) {
return (first && second) && (second instanceof first.constructor) && second.id == first.id;
};
ObjectDataField.prototype.isEqual = function(first, second) {
return (first && second) && (second instanceof first.constructor) && second == first;
};
class Person extends Model
{
static get fields()
{
return [{ name: "id", type: "string"},
{ name: "Order", type: "object" },
{ name: "Name", type: "string" }];
}
}
class Order extends Model
{
static get fields() {
return [
{ name: "id", type: "string"},
{ name: "Buyer", type: "object" },
];
}
}
let rawPerson = {Name: "Um nome", id: "a"};
let rawPerson2 = {Name: "Outra pessoa", id: "b"};
let rawOrder = {id: "abc"};
// rawPerson.Order = rawOrder;
// rawPerson2.Order = rawOrder;
// rawOrder.Buyer = rawPerson;
let person = new Person(rawPerson);
let person2 = new Person(rawPerson2);
// rawPerson.Order = rawOrder;
// rawPerson2.Order = rawOrder;
// rawOrder.Buyer = person;
let order = new Order(rawOrder);
person.Order = order;
person2.Order = order;
order.Buyer = person;
console.log("rawPerson", rawPerson);
console.log("rawOrder", rawOrder);
console.log("person", person);
console.log("order", order);
let store = new Store({
data: [order],
fields: [{ name: "BuyerName", type: "string", dataSource: "Buyer.Name" }],
modelClass: Order
});
let orderIdField = new TextField({
width: 200,
label: "Order Id",
icon: "b-fa b-fa-plug",
style: "margin-right: .5em",
name: "id"
});
let personNameField = new TextField({
width: 200,
label: "Customer name",
icon: "b-fa b-fa-plug",
style: "margin-right: .5em",
name: "BuyerName"
});
let personNameField2 = new TextField({
width: 200,
label: "Customer name complex",
icon: "b-fa b-fa-plug",
style: "margin-right: .5em",
name: "Buyer.Name"
});
let button = new Button({
text: "Button",
onClick: function () {
store.first.Buyer = person2;
myContainer.record = store.first;
}
});
let myContainer = new Container({
appendTo: document.body,
items: [orderIdField, personNameField, personNameField2, button]
});
myContainer.record = store.first;