新しいフォーマットプログラムを作成する¶
目標.目標¶
流行のフォーマット化されたプログラムの仕組みを監督する
処理プログラムやマッチング器の概念を理解する
小さなフォーマットプログラムを作成します
体を鍛える¶
メタデータの全てのテキスト情報を基本レイアウトで表示する新しいフォーマットプログラムを追加する。
以前のフォーマットプログラムは、テキストフィールドのタグを表示するために更新される。
フォーマットされたプログラムテンプレートシステムを用いて処理プログラムのビューを提示する
フォーマットされたプログラムビューにスタイルを追加します。
要素をレンダリングするための木を作成する
ISO元素を用いた変換
黙認木様式を使用する
すべてのデフォルトビューを使用してプログラム要素をフォーマットする
デフォルト·フォーマット·ツール·ビューのカスタマイズ
処理プログラムの再ロード方法
訂正する.¶
Https://github.com/fgravin/core-geonnetwork/Commits/foss 4 gにアクセス
1.新しいフォーマットプログラムの作成-/schemas/iso 19139/src/main/plugin/iso 19139/Formatterに‘foss 4 g’という新しいフォルダを作成します-この新しいフォルダに新しいgroovyファイルを作成します-テキスト情報は格納されています gco:CharacterString
handlers.add 'gco:CharacterString', {el -> "<div>${el.text()}</div>"}
マッチを追加して遊びます
name
そしてtext
属性です。
handlers.add select: {el -> !el.'gco:CharacterString'.text().isEmpty()}, {el -> "<div><b>${el.name()}</b> - ${el.text()}</div>" }
使用
handlers.fileResult
機能
view.groovy
handlers.add select: {el -> !el.'gco:CharacterString'.text().isEmpty()}, {el -> handlers.fileResult('foss4g/elem.html', [name: el.name(), text: el.text()]) }
elem.html
<dl> <dt>{{name}}</dt> <dd>{{text}}</dd> </dl>
Wro 4 jでチェックされたフォルダにカスタムの少ないファイルを追加し,フォーマットプログラムにリンクする.
formatter.less
dt { width: 230px; font-weight: normal; font-style: italic; color: #555555; clear: none; padding-left: 15px; text-align: left; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; float: left; } dd { margin-left: 250px; border-left: 1px solid #999999; padding-left: 1em; background: #eeeeee; }
view.groovy
handlers.start { '''<link rel="stylesheet" href="../../static/formatter.css"/> <div class="container">''' } handlers.end { '</div>' } handlers.add select: {el -> !el.'gco:CharacterString'.text().isEmpty()}, {el -> handlers.fileResult('foss4g/elem.html', [name: el.name(), text: el.text()]) }
使用
fmt-repeat-only-children
テンプレートとprent()
機能します。
view.groovy
... handlers.add select: {el -> !el.'gco:CharacterString'.text().isEmpty()}, group: true, {els -> def elements = els.collect {el -> [name: el.name(), text: el.text()] } handlers.fileResult('foss4g/elem.html', [elements: elements, parent: els[0].parent().name()]) }
elem.html
<dl> <h3>{{parent}}</h3> <div fmt-repeat="el in elements" fmt-repeat-only-children="true"> <dt>{{el.name}}</dt> <dd>{{el.text}}</dd> </div> </dl>
見
nodeLabel
機能
view.groovy
... handlers.add select: {el -> !el.'gco:CharacterString'.text().isEmpty()}, group: true, {els -> def elements = els.collect {el -> [name: f.nodeLabel(el), text: el.text()] } handlers.fileResult('foss4g/elem.html', [elements: elements, parent: f.nodeLabel(els[0].parent())]) }
増列する.
gn-metadata-view
クラスはあなたのコンテナに設定され、処理プログラムが更新されます。
view.groovy
handlers.start { '''<div class="gn-metadata-view container">''' } handlers.end { '</div>' } def isoHandlers = new iso19139.Handlers(handlers, f, env) handlers.add select: isoHandlers.matchers.isTextEl, isoHandlers.isoTextEl handlers.add name: 'Container Elements', select: isoHandlers.matchers.isContainerEl, priority: -1, isoHandlers.commonHandlers.entryEl(f.&nodeLabel, isoHandlers.addPackageViewClass) isoHandlers.addExtentHandlers()
見
SummaryFactory
級友たち。
view.groovy
import iso19139.SummaryFactory def isoHandlers = new iso19139.Handlers(handlers, f, env) SummaryFactory.summaryHandler({it.parent() is it.parent()}, isoHandlers) isoHandlers.addDefaultHandlers()
カスタムオプションを追加する
SummaryFactory
view.groovy
import iso19139.SummaryFactory def isoHandlers = new iso19139.Handlers(handlers, f, env) def factory = new SummaryFactory(isoHandlers, {summary -> summary.title = "My Title" summary.addCompleteNavItem = false summary.addOverviewNavItem = false summary.associated.clear() }) handlers.add name: "Summary Handler", select: {it.parent() is it.parent()}, {factory.create(it).getResult()} isoHandlers.addDefaultHandlers()
カスタマイズされた行為を
iso19139.Handlers
構造関数
view.groovy
def isoHandlers = new iso19139.Handlers(handlers, f, env) { { def oldImpl = super.isoTextEl isoTextEl = { el -> "----------- ${oldImpl(el)}" } } }