https://forge.ispras.ru/https://forge.ispras.ru/favicon.ico?16490126692014-07-09T07:05:08ZOpen-Source ProjectsRequality - Feature #5013: Экспорт документов в шаблон отчетаhttps://forge.ispras.ru/issues/5013?journal_id=198992014-07-09T07:05:08ZDenis Kildishevkildishev@ispras.ru
<ul><li><strong>Status</strong> changed from <i>New</i> to <i>Resolved</i></li><li><strong>% Done</strong> changed from <i>0</i> to <i>100</i></li></ul><p>Applied in changeset r3608.</p> Requality - Feature #5013: Экспорт документов в шаблон отчетаhttps://forge.ispras.ru/issues/5013?journal_id=199002014-07-09T07:10:55ZDenis Kildishevkildishev@ispras.ru
<ul><li><strong>Status</strong> changed from <i>Resolved</i> to <i>New</i></li><li><strong>% Done</strong> changed from <i>100</i> to <i>0</i></li></ul><p>Спасибо за идею, нам это тоже потребовалось для новых видов отчетов!</p>
<p>Мы реализовали немного по другому, т.к. в проектах может быть много документов и не во всех отчетах требуется доступ к DOM, то мы решили предоставлять доступ к DOM конкретного документа по запросу, а не строить его заранее для всех.</p>
<p>Для получения DOM документа из шаблона отчета можно использовать вызов для объекта класса Location метода getDocumentNodeModel() или воспользоваться методом utils.getDocumentNodeModel(qid), где qid это путь к документу, который можно получить нажатием правой кнопки на документе и выбором пункта меню Copy Full Name.</p>
<p>Оба метода возвращают объект класса freemarker.ext.dom.NodeModel, как и было реализовано в предложенном патче.</p>
<p>С уважением, Денис Кильдишев</p> Requality - Feature #5013: Экспорт документов в шаблон отчетаhttps://forge.ispras.ru/issues/5013?journal_id=199012014-07-09T07:11:14ZDenis Kildishevkildishev@ispras.ru
<ul><li><strong>Status</strong> changed from <i>New</i> to <i>Resolved</i></li></ul> Requality - Feature #5013: Экспорт документов в шаблон отчетаhttps://forge.ispras.ru/issues/5013?journal_id=199112014-07-10T10:38:58ZDenis Filatovdenis.filatov@etsi.org
<ul></ul><p>Этот способ далеко не самый эффективный.<br />Например в простейшем цикле я вынужден кэшировать DOM в шаблоне чтоб избежать ее множественного создания<br /><pre>
<#local doms = {}/>
<#list req.getLocations() as loc>
<#local doc = loc.getDocument()/>
<#if doc?has_content>
<#local qid = doc.getQualifiedId()/>
<#if (doms[qid])?has_content>
<#local dom = doms[qid]/>
<#else>
<#local dom = utils.getDocumentNodeModel(qid) />
<#if dom?has_content>
<#local doms = doms + {qid : dom } />
</#if>
</#if>
</pre><br />Надо либо кэщировать DOM в utils, либо возвращать по запросу DOM сразу для всех документов.</p> Requality - Feature #5013: Экспорт документов в шаблон отчетаhttps://forge.ispras.ru/issues/5013?journal_id=199152014-07-10T13:47:28ZDenis Kildishevkildishev@ispras.ru
<ul></ul><p>Спасибо за предложенный варинат. Хочется уточнить, что кроме доступа через utils можно использовать метод для Location("getDocumentNodeModel()"). Кэш был реализован для объектов класса Document. При этом, при получении дерева как через utils, так и при помощи метода в Location будет возвращаться один и тот же экземпляр дерева. Актуальность кэша гарантируется особенностями механизма генерации отчетов.</p> Requality - Feature #5013: Экспорт документов в шаблон отчетаhttps://forge.ispras.ru/issues/5013?journal_id=199242014-07-11T08:51:32ZDenis Kildishevkildishev@ispras.ru
<ul><li><strong>Published in build</strong> set to <i>0.16.201</i></li></ul> Requality - Feature #5013: Экспорт документов в шаблон отчетаhttps://forge.ispras.ru/issues/5013?journal_id=199352014-07-11T10:37:24ZAlexey Khoroshilovkhoroshilov@ispras.ru
<ul><li><strong>Target version</strong> set to <i>0.16</i></li></ul> Requality - Feature #5013: Экспорт документов в шаблон отчетаhttps://forge.ispras.ru/issues/5013?journal_id=211312014-11-11T15:08:07ZAlexey Khoroshilovkhoroshilov@ispras.ru
<ul><li><strong>Status</strong> changed from <i>Resolved</i> to <i>Closed</i></li></ul>