YomeKitsuma
14 Feb 2012, 3:04 AM
Hi,
I face this problem :
I've a Model of User which have an OrganizationID.
Firstly, I want to associate (and display) OrganizationID to the Name of the Organization (which is an other Model).
Secondly, in my grid, when editing, i'll like to display a combo box (with the Organizations name).
Here is my code :
My model =
Ext.define('Admin.model.User',{ extend : 'Ext.data.Model',
idProperty : 'Id',
fields : [
{name:'Id', type:'integer'},
{name: 'mappedOrganizations', mapping: 'organization'},
{
name: 'OrganizationId',
type: 'string',
convert: function(value, record) {
var orgs = record.get('mappedOrganizations');
var val = 'unknown';
for (var i=0; i<orgs.length; i++) {
if (value == orgs[i].Id) {
val = orgs[i].Name;
break;
}
}
return val;
}
},
{name:'RoleId', type:'integer'},
'FirstName',
'LastName',
'UserName',
'Email',
'Phone',
{name:'Active', type:'boolean'},
{name:'Avatar', type:'string'},
{name:'base_path', defaultValue:Altair.desktop.Constants.USERS_AVATAR_PATH}
],
belongsTo: [{
model : 'Admin.model.Organization',
name : 'organization',
foreignKey : 'OrganizationId',
primaryKey : 'organization_id',
instanceName : 'OrganizationBelongsToInstance',
associationKey : 'organizationKey',
getterName : 'getOrganization'
}]
});
My store :
Ext.define('Admin.users.store.Users',{ extend : 'Ext.data.Store',
model : 'Admin.model.User',
proxy : {
type : 'ajax',
reader : 'users-reader',
url : 'data/admin/users.json',
autoLoad : true
}
});
My Reader (so simple)
Ext.define('Admin.users.reader.UsersReader', {
extend : 'Ext.data.reader.Json',
alias : 'reader.users-reader',
root: 'results.users'
});
Here my json data
{
success: true,
results: {
users: [{
Id : 1,
OrganizationId : 1,
RoleId : 1,
FirstName : "John",
LastName : "Doe",
UserName : "JohnDoe",
Email : "john.doe@osmose.fr",
Phone : "111-111-111",
Active : "true",
Avatar : "images/icons/48/user-icon.png",
base_path : ""
},
{
Id : 2,
OrganizationId : 1,
RoleId : 2,
FirstName : "Koungue",
LastName : "Foo",
UserName : "KoungueFoo",
Email : "koungue.foo@osmose.fr",
Phone : "111-111-111",
Active : "true",
Avatar : "images/icons/48/user-icon.png",
base_path : ""
},
{
Id : 3,
OrganizationId : 2,
RoleId : 1,
FirstName : "Supa",
LastName : "Dupa",
UserName : "SupaDupa",
Email : "supa.dupa@enoleo.fr",
Phone : "222-222-222",
Active : "true",
Avatar : "images/icons/48/user-icon.png",
base_path : ""
},
{
Id : 4,
OrganizationId : 3,
RoleId : 1,
FirstName : "Mista",
LastName : "Ti",
UserName : "MistaTi",
Email : "mista.ti@tagall.fr",
Phone : "333-333-333",
Active : "true",
Avatar : "images/icons/48/user-icon.png",
base_path : ""
}]
}
}
{
success: true,
organizations: [{
organization_id : 1,
Id : 1,
Name : "Tutu",
Email : "info@tutu.fr",
Phone : "0493",
Adress : "Roquefort-les-pins"
},
{
organization_id : 2,
Id : 2,
Name : "Tata",
Email : "info@tata.fr",
Phone : "0493",
Adress : "Roquefort-les-pins"
},
{
organization_id : 3,
Id : 3,
Name : "Titi",
Email : "info@titi.fr",
Phone : "0493",
Adress : "Roquefort-les-pins"
}]
}
So, when i'm tracing the result everything works well for the "Users data" but nothing is loaded in the Organizations association...
Does "belongsTo" really works in 4.0.7 ?
ps : i'va also try to put "organizations data" into the users.json... nothing works
I face this problem :
I've a Model of User which have an OrganizationID.
Firstly, I want to associate (and display) OrganizationID to the Name of the Organization (which is an other Model).
Secondly, in my grid, when editing, i'll like to display a combo box (with the Organizations name).
Here is my code :
My model =
Ext.define('Admin.model.User',{ extend : 'Ext.data.Model',
idProperty : 'Id',
fields : [
{name:'Id', type:'integer'},
{name: 'mappedOrganizations', mapping: 'organization'},
{
name: 'OrganizationId',
type: 'string',
convert: function(value, record) {
var orgs = record.get('mappedOrganizations');
var val = 'unknown';
for (var i=0; i<orgs.length; i++) {
if (value == orgs[i].Id) {
val = orgs[i].Name;
break;
}
}
return val;
}
},
{name:'RoleId', type:'integer'},
'FirstName',
'LastName',
'UserName',
'Email',
'Phone',
{name:'Active', type:'boolean'},
{name:'Avatar', type:'string'},
{name:'base_path', defaultValue:Altair.desktop.Constants.USERS_AVATAR_PATH}
],
belongsTo: [{
model : 'Admin.model.Organization',
name : 'organization',
foreignKey : 'OrganizationId',
primaryKey : 'organization_id',
instanceName : 'OrganizationBelongsToInstance',
associationKey : 'organizationKey',
getterName : 'getOrganization'
}]
});
My store :
Ext.define('Admin.users.store.Users',{ extend : 'Ext.data.Store',
model : 'Admin.model.User',
proxy : {
type : 'ajax',
reader : 'users-reader',
url : 'data/admin/users.json',
autoLoad : true
}
});
My Reader (so simple)
Ext.define('Admin.users.reader.UsersReader', {
extend : 'Ext.data.reader.Json',
alias : 'reader.users-reader',
root: 'results.users'
});
Here my json data
{
success: true,
results: {
users: [{
Id : 1,
OrganizationId : 1,
RoleId : 1,
FirstName : "John",
LastName : "Doe",
UserName : "JohnDoe",
Email : "john.doe@osmose.fr",
Phone : "111-111-111",
Active : "true",
Avatar : "images/icons/48/user-icon.png",
base_path : ""
},
{
Id : 2,
OrganizationId : 1,
RoleId : 2,
FirstName : "Koungue",
LastName : "Foo",
UserName : "KoungueFoo",
Email : "koungue.foo@osmose.fr",
Phone : "111-111-111",
Active : "true",
Avatar : "images/icons/48/user-icon.png",
base_path : ""
},
{
Id : 3,
OrganizationId : 2,
RoleId : 1,
FirstName : "Supa",
LastName : "Dupa",
UserName : "SupaDupa",
Email : "supa.dupa@enoleo.fr",
Phone : "222-222-222",
Active : "true",
Avatar : "images/icons/48/user-icon.png",
base_path : ""
},
{
Id : 4,
OrganizationId : 3,
RoleId : 1,
FirstName : "Mista",
LastName : "Ti",
UserName : "MistaTi",
Email : "mista.ti@tagall.fr",
Phone : "333-333-333",
Active : "true",
Avatar : "images/icons/48/user-icon.png",
base_path : ""
}]
}
}
{
success: true,
organizations: [{
organization_id : 1,
Id : 1,
Name : "Tutu",
Email : "info@tutu.fr",
Phone : "0493",
Adress : "Roquefort-les-pins"
},
{
organization_id : 2,
Id : 2,
Name : "Tata",
Email : "info@tata.fr",
Phone : "0493",
Adress : "Roquefort-les-pins"
},
{
organization_id : 3,
Id : 3,
Name : "Titi",
Email : "info@titi.fr",
Phone : "0493",
Adress : "Roquefort-les-pins"
}]
}
So, when i'm tracing the result everything works well for the "Users data" but nothing is loaded in the Organizations association...
Does "belongsTo" really works in 4.0.7 ?
ps : i'va also try to put "organizations data" into the users.json... nothing works