Как добавить всплывающую подсказку в ячейку DateColumn в Sencha Architect 3?

Вот как я работаю с Cell в обычном Column:

{
    xtype: 'gridcolumn',
    renderer: function(value, metaData, record, rowIndex, colIndex, store, view) {
        metaData.tdAttr = 'data-qtip="BlobKey:' + record.get('key') + '"';
        return value;
    },
    itemId: 'filename',
    dataIndex: 'filename',
    text: 'Filename',
    flex: 1
}

Это работает отлично, но в DateColumn нет атрибута renderer, и ни один из предложенных примеров, которые я нашел в Интернете, не работает.

Вот как выглядит мое определение DateColumn:

{
    xtype: 'datecolumn',
    itemId: 'created-on-column',
    dataIndex: 'createdOn',
    text: 'Created',
    format: 'c'
}

Я не могу понять, как добавить ToolTip в ячейку в DateColumn. На панели Config Sencha Architect 3.0 нет атрибута для renderer, и все мои попытки использовать событие afterRender или другие предложения, сделанные пару лет назад, терпят неудачу.


person Community    schedule 02.12.2013    source источник
comment
Вот ссылка на полное решение, которое я придумал.   -  person    schedule 03.12.2013


Ответы (2)


На самом деле класс столбца даты является расширением класса столбца, поэтому он имеет renderer. Это просто скрыто из документа, чтобы убедиться, что defaultRenderer будет использоваться. Это означает, что вы можете использовать ту же стратегию для добавления всплывающей подсказки. Вам просто нужно убедиться, что ваш пользовательский модуль рендеринга вернет результат модуля рендеринга по умолчанию, чтобы значение было отформатировано как обычно.

Вот как это можно сделать:

{
    xtype: 'datecolumn',
    itemId: 'created-on-column',
    dataIndex: 'createdOn',
    text: 'Created',
    format: 'c',
    renderer: function(value, metaData, record, rowIndex, colIndex, store, view) {
        metaData.tdAttr = 'data-qtip="BlobKey:' + record.get('symbol') + '"';
        // Pass the call to the date column default renderer
        return Ext.grid.column.Date.prototype.defaultRenderer.apply(this, arguments);
    }
}

Обновить

В Architect вы можете создать переопределение. Например, при использовании шаблона проекта Basic › Master/Detail (потому что есть сетка) мне помогает следующее:

Ext.define('MyApp.view.override.MainView', {
    override: 'MyApp.view.MainView'
    
    ,initComponent: function() {
        this.callParent();

        var grid = this.down('gridcolumn[dataIndex=date]');
        
        Ext.override(grid, {
            renderer: function(value, metaData, record) {
                metaData.tdAttr = 'data-qtip="BlobKey:' + record.get('title') + '"';
                // Pass the call to the date column default renderer
                return this.callParent(arguments);
            }
        });
    }   
});

Удивительно, но мне пришлось самому добавить этот класс в requires приложения...

Это поставило меня на правильный путь, чтобы разработать это как плагин:

Я принимаю это как решение передать репутацию @rixo за то, что он приложил столько усилий, чтобы помочь мне, но я хотел опубликовать ссылку на фактическое решение, которое он заставил меня создать. Я добавил его в ответ, потому что уверен, что он потеряется в разделе комментариев.

Вот ссылка на решение, которое я разработал на основе этого ответа и еще одного.

person rixo    schedule 02.12.2013
comment
поэтому нет способа сделать это изнутри Sencha Architect, мне не нужно повторно редактировать файл каждый раз, когда я публикую. - person ; 02.12.2013
comment
Я скачал Architect eval и увидел кнопку «Создать переопределение». Все прошло не так гладко, как хотелось бы, но мне удалось заставить его работать. Смотрите мой обновленный ответ. Я предполагаю, что было бы много других способов включить этот фрагмент (расширить Ext.grid.column.Date или переопределить его, чтобы добавить поддержку всплывающих подсказок, миксинов и т. д.). - person rixo; 02.12.2013
comment
спасибо, я не ожидал, что вы приложите столько усилий, это ценится. Я экспериментирую, пытаясь заставить plugin работать, если я заставлю его работать, я также опубликую это как ответ. - person ; 03.12.2013
comment
Это сложнее, чем я хотел, поэтому я продолжаю исследования, и другой похожий вопрос привел меня к этому решению. - person ; 03.12.2013
comment
Эй, это первый раз, когда два моих ответа объединяются, чтобы произвести потомство. Отличная работа! Что касается Architect, я уже некоторое время думаю о том, чтобы взглянуть на него. Вы не первый, кто спрашивает, как адаптировать решение для него, и я хотел убедиться в этом сам. - person rixo; 04.12.2013
comment
это отличный способ отслеживать все файлы и нелепое количество свойств и конфигураций ... - person ; 05.12.2013

вы можете попробовать что-то вроде этого, если вы планируете показывать ячейку только для чтения::

{
                header:"Created"
               ,width:20, sortable:true
               ,renderer:yourrenderer // Ext.util.Format.dateRenderer('m/d/Y')
               ,dataIndex:'createdOn'
}

и в магазине::

store:new Ext.data.JsonStore({
                // other cofig params
                ,fields:[
                   // other columns
                   ,{name:'createdOn', type:'date', dateFormat:'n/j h:ia'}

                ]
            })

Надеюсь это поможет!

person Pankaj Landge    schedule 02.12.2013
comment
это не имеет ничего общего с настройкой всплывающей подсказки ячейки - person ; 02.12.2013