У меня есть модель данных, в которую я хочу добавить общее количество фильтров. Я указываю имя и значение. Как я могу добавить эти связанные с hasMany поля в качестве фильтров к моей сетке? Я попытался написать пользовательскую опцию фильтрации, но не могу отображать фильтры без прикрепленного индекса данных, который недоступен для ассоциации hasMany.
Ext.define('AirGon.model.Project', {
extend: 'Ext.data.Model',
fields: [
{ name: 'Link', type: 'string' },
{ name: 'Title', type: 'string' },
{ name: 'Description', type: 'string' },
{ name: 'MappedMetadata', mapping: 'Metadata'},
{ name: 'XMax', type: 'float' },
{ name: 'XMin', type: 'float' },
{ name: 'YMax', type: 'float' },
{ name: 'YMin', type: 'float' }
],
hasMany: { model: 'Metadata', name: 'Metadata', associationKey: 'Metadata' }
});
Ext.define('Metadata', {
extend: 'Ext.data.Model',
fields: ['Name', 'Value']
});
Это моя попытка пользовательской фильтрации. Я получаю DataStore из основного хранилища, а затем добавляю пользовательский рендеринг, но не могу отфильтровать или отсортировать этот столбец из-за отсутствия dataIndex.
var column = {
header: 'Meta',
//?????????dataIndex: 'MappedMetadata[0]',?????
sortable: true,
filterable: true,
filter: {
type: 'string'
},
renderer: function (value, meta, record) {
console.log(record.MetadataStore.data.items[index].data)
return record.MetadataStore.data.items[index].data.Value;
}
}
Data. Данные моделируются таким образом, чтобы можно было вводить переменное количество метаданных, и «тег» не будет известен системе.
{
"Link": "link.com",
"Title": "project",
"Description": "descript",
"State": "",
"Metadata": [
{
"Name": "County",
"Value": "32"
},
{
"Name": "Info",
"Value": "info"
},
{
"Name": "State",
"Value": "TN"
}
],
"XMin": "-1",
"XMax": "-1",
"YMin": "1",
"YMax": "1"
}