This is an automated email from the ASF dual-hosted git repository. exceptionfactory pushed a commit to branch main-staging in repository https://gitbox.apache.org/repos/asf/nifi-site.git
commit 77f3922be2503d87b352dc858af1e274419b4e1e Author: exceptionfactory <[email protected]> AuthorDate: Mon Nov 4 13:01:54 2024 -0600 NIFI-13915 Updated documentation for NiFi 2.0.0 (cherry picked from commit 50bc21bcdb070c4a08722735150e8c3e482db390) --- .github/workflows/build.yml | 1 + .gitignore | 3 + README.md | 3 + config.toml | 25 ++ content/documentation/_index.md | 2 +- content/documentation/v2/_index.md | 12 - prebuild.sh | 33 +++ prebuild/config.toml | 6 + prebuild/layouts/index.html | 51 ++++ static/.htaccess | 3 + themes/nifi/layouts/partials/component.html | 422 ++++++++++++++++++++++++++++ themes/nifi/layouts/section/components.html | 141 ++++++++++ themes/nifi/static/css/main.css | 58 +++- 13 files changed, 733 insertions(+), 27 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6bdd3992..b5ddee30 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -40,6 +40,7 @@ jobs: rm -rf stylesheets - name: Build run: | + bash prebuild.sh hugo - name: Publish working-directory: ${{ env.PUBLISH_DIRECTORY }} diff --git a/.gitignore b/.gitignore index 494176ae..e12f7329 100644 --- a/.gitignore +++ b/.gitignore @@ -24,8 +24,11 @@ node_modules/ .sass-cache .ruby-version package-lock.json +nifi-runtime-manifest.json # hugo /public /resources /.hugo_build.lock +/prebuild/public +/prebuild/.hugo_build.lock diff --git a/README.md b/README.md index 39624a3c..055affb2 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,9 @@ The Apache NiFi website uses [Hugo](https://gohugo.io) to build static HTML and ## Build +- Run prebuild.sh for generated documentation + - `bash prebuild.sh` + - Run Hugo Build - `hugo` diff --git a/config.toml b/config.toml index aae04226..17ffaeed 100644 --- a/config.toml +++ b/config.toml @@ -8,6 +8,7 @@ disableKinds = ["RSS"] enableGitInfo = true theme = "nifi" enableInlineShortcodes = true +disablePathToLower = true [markup.goldmark.renderer] unsafe = true @@ -28,6 +29,8 @@ assets = "assets" matomoSiteId = 28 productionHost = "nifi.apache.org" +staticDocsPath = "/nifi-docs" + apacheFoundationGroupsUrl = "https://projects.apache.org/json/foundation/groups.json" apacheFoundationPeopleNameUrl = "https://projects.apache.org/json/foundation/people_name.json" @@ -47,7 +50,29 @@ minifiCppCurrentProjectVersionReleased = "2024-05-17" minifiCppPreviousProjectVersion = "0.15.0" minifiCppPreviousProjectVersionReleased = "2023-09-01" +[module] + [[module.mounts]] + source = "content" + target = "content" + [[module.mounts]] + source = "static" + target = "static" + [[module.mounts]] + source = "layouts" + target = "layouts" + [[module.mounts]] + source = "prebuild/public/components" + target = "content/components" + [[module.mounts]] + source = "prebuild/public/html" + target = "content/nifi-docs" + [menu] + [[menu.main]] + name = 'NiFi Version 2 Documentation' + url = '/components/' + weight = 1 + parent = 'Documentation' [[menu.main]] name = 'Wiki' url = 'https://cwiki.apache.org/confluence/display/NIFI' diff --git a/content/documentation/_index.md b/content/documentation/_index.md index 2156f91c..273a8691 100644 --- a/content/documentation/_index.md +++ b/content/documentation/_index.md @@ -11,7 +11,7 @@ menu: ## Configuration and Component Properties -- [NiFi Documentation {{< param currentProjectVersion >}}]({{< relref "/documentation/v2" >}}) +- [NiFi Documentation {{< param currentProjectVersion >}}]({{< relref "/components/" >}}) - [NiFi Documentation {{< param previousProjectVersion >}}]({{< relref "/documentation/v1" >}}) ## Reference Information diff --git a/content/documentation/v2/_index.md b/content/documentation/v2/_index.md deleted file mode 100644 index 518e9288..00000000 --- a/content/documentation/v2/_index.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: "Documentation for Version 2" -layout: "documentation" -iframe: true -menu: - main: - name: NiFi Version 2 Documentation - parent: "Documentation" - weight: 1 ---- - -<iframe class="documentation-container" src="https://nifi.apache.org/documentation/nifi-{{< param currentProjectVersion >}}-M4/"></iframe> diff --git a/prebuild.sh b/prebuild.sh new file mode 100644 index 00000000..6fcc2549 --- /dev/null +++ b/prebuild.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +CURRENT_VERSION=2.0.0 + +RESOURCES_DIR=resources +PREBUILD_DIR=prebuild + +MAVEN_BASE_URL=https://repo1.maven.org/maven2 + +MANIFEST_JAR_URL="$MAVEN_BASE_URL/org/apache/nifi/nifi-runtime-manifest/$CURRENT_VERSION/nifi-runtime-manifest-$CURRENT_VERSION.jar" +MANIFEST_JAR_PATH=$RESOURCES_DIR/nifi-runtime-manifest.jar +MANIFEST_JSON=nifi-runtime-manifest.json + +NIFI_DOCS_ZIP_URL="$MAVEN_BASE_URL/org/apache/nifi/nifi-docs/$CURRENT_VERSION/nifi-docs-$CURRENT_VERSION-resources.zip" +NIFI_DOCS_ZIP_PATH=$RESOURCES_DIR/nifi-docs-resources.zip + +# Create Hugo directories +if [ ! -d $RESOURCES_DIR ];then + mkdir $RESOURCES_DIR +fi + +# Download Runtime Manifest JAR and extract JSON to prebuild +echo "Downloading $MANIFEST_JAR_URL" +curl -o $MANIFEST_JAR_PATH $MANIFEST_JAR_URL +unzip -q -o -d $PREBUILD_DIR/assets $MANIFEST_JAR_PATH $MANIFEST_JSON + +# Download Documentation Resources and extract to prebuild +echo "Downloading $NIFI_DOCS_ZIP_URL" +curl -o $NIFI_DOCS_ZIP_PATH $NIFI_DOCS_ZIP_URL +unzip -q -o -d $PREBUILD_DIR/public $NIFI_DOCS_ZIP_PATH + +# Build components using prebuild directory with Hugo +hugo -s $PREBUILD_DIR diff --git a/prebuild/config.toml b/prebuild/config.toml new file mode 100644 index 00000000..04ee003d --- /dev/null +++ b/prebuild/config.toml @@ -0,0 +1,6 @@ +title = "Apache NiFi" +copyright = "The Apache Software Foundation" +disableKinds = ["RSS", "sitemap", "taxonomy", "term"] + +[outputs] +home = ["html"] diff --git a/prebuild/layouts/index.html b/prebuild/layouts/index.html new file mode 100644 index 00000000..0059840d --- /dev/null +++ b/prebuild/layouts/index.html @@ -0,0 +1,51 @@ +{{ $manifest := dict }} +{{ with resources.Get "nifi-runtime-manifest.json" }} + {{ with . | transform.Unmarshal }} + {{ $manifest = . }} + {{ end }} +{{ else }} + not found +{{ end }} + +{{ range $manifest.bundles }} + {{ range .componentManifest.controllerServices }} + {{ $simpleClassName := replaceRE `.+?\.?([^\.]+)$` "$1" .type }} + {{ $metadata := merge . (dict "title" $simpleClassName "componentType" "controller-services") }} + {{ $string := jsonify $metadata }} + {{ $filename := printf "components/%s/_index.md" .type }} + {{ $resource := resources.FromString $filename $string }} + {{ $file := $resource.RelPermalink }} + {{ end }} + {{ range .componentManifest.processors }} + {{ $simpleClassName := replaceRE `.+?\.?([^\.]+)$` "$1" .type }} + {{ $metadata := merge . (dict "title" $simpleClassName "componentType" "processors") }} + {{ $string := jsonify $metadata }} + {{ $filename := printf "components/%s/_index.md" .type }} + {{ $resource := resources.FromString $filename $string }} + {{ $file := $resource.RelPermalink }} + {{ end }} + {{ range .componentManifest.reportingTasks }} + {{ $simpleClassName := replaceRE `.+?\.?([^\.]+)$` "$1" .type }} + {{ $metadata := merge . (dict "title" $simpleClassName "componentType" "reporting-tasks") }} + {{ $string := jsonify $metadata }} + {{ $filename := printf "components/%s/_index.md" .type }} + {{ $resource := resources.FromString $filename $string }} + {{ $file := $resource.RelPermalink }} + {{ end }} + {{ range .componentManifest.parameterProviders }} + {{ $simpleClassName := replaceRE `.+?\.?([^\.]+)$` "$1" .type }} + {{ $metadata := merge . (dict "title" $simpleClassName "componentType" "parameter-providers") }} + {{ $string := jsonify $metadata }} + {{ $filename := printf "components/%s/_index.md" .type }} + {{ $resource := resources.FromString $filename $string }} + {{ $file := $resource.RelPermalink }} + {{ end }} + {{ range .componentManifest.flowAnalysisRules }} + {{ $simpleClassName := replaceRE `.+?\.?([^\.]+)$` "$1" .type }} + {{ $metadata := merge . (dict "title" $simpleClassName "componentType" "flow-analysis-rules") }} + {{ $string := jsonify $metadata }} + {{ $filename := printf "components/%s/_index.md" .type }} + {{ $resource := resources.FromString $filename $string }} + {{ $file := $resource.RelPermalink }} + {{ end }} +{{ end }} diff --git a/static/.htaccess b/static/.htaccess index 1947d7dc..6087b77e 100644 --- a/static/.htaccess +++ b/static/.htaccess @@ -10,6 +10,9 @@ RewriteRule ^documentation/nifi-latest/html/(.+?)$ /documentation/nifi-2.0.0-M4/ # Redirect component documentation to specified version RewriteRule ^docs/nifi-docs/components/org\.apache\.nifi/([^\/]+?)/[^\/]+?/(.*)$ docs/nifi-docs/components/org.apache.nifi/$1/1.28.0/$2 [L] +# Rewrite documentation overview pages +RewriteRule ^documentation/v2/$ /components/ [L,R] + # Rewrite historical links RewriteRule ^minifi/.*$ /projects/minifi/ [L,R] RewriteRule ^quickstart\.html$ /documentation/v2/ [L,R] diff --git a/themes/nifi/layouts/partials/component.html b/themes/nifi/layouts/partials/component.html new file mode 100644 index 00000000..b057a43b --- /dev/null +++ b/themes/nifi/layouts/partials/component.html @@ -0,0 +1,422 @@ +{{ $processors := where .Site.Pages "Params.componentType" "processors" }} +{{ $controllerServices := where .Site.Pages "Params.componentType" "controller-services" }} + +<h3>{{ .Params.title }} {{ .Params.version }}</h3> + +<dl class="uk-description-list"> + <dt>Bundle</dt> + <dd>{{ .Params.group }} | {{ .Params.artifact }}</dd> + <dt>Description</dt> + <dd>{{ .Params.typeDescription }}</dd> + <dt>Tags</dt> + <dd> + {{- range $index, $tag := .Params.tags -}} + {{- if $index }}, {{ end }}{{ $tag }} + {{- end -}} + </dd> + <dt>Input Requirement</dt> + <dd> + {{ replace .Params.inputRequirement "INPUT_" "" }} + </dd> + <dt>Supports Sensitive Dynamic Properties</dt> + <dd>{{ .Params.supportsSensitiveDynamicProperties }}</dd> +</dl> + +<div class="uk-margin uk-flex"> + <div class="component-section-header uk-width-3-4">Properties</div> + <div class="uk-width-1-4 uk-text-right"> + <button uk-icon="icon: expand" uk-tooltip="Expand Properties" id="expand-property-descriptors" class="uk-button uk-button-link uk-button-small"></button> + <button uk-icon="icon: shrink" uk-tooltip="Collapse Properties" id="shrink-property-descriptors" class="uk-button uk-button-link uk-button-small"></button> + </div> + <script type="text/javascript"> + document.addEventListener('uikit:init', () => { + var expand = document.getElementById('expand-property-descriptors'); + expand.addEventListener('click', () => { + var descriptors = document.getElementsByClassName('property-descriptor-content'); + for (var i = 0; i < descriptors.length; i++) { + var descriptor = descriptors[i]; + descriptor.hidden = false; + } + }); + + var shrink = document.getElementById('shrink-property-descriptors'); + shrink.addEventListener('click', () => { + var descriptors = document.getElementsByClassName('property-descriptor-content'); + for (var i = 0; i < descriptors.length; i++) { + var descriptor = descriptors[i]; + descriptor.hidden = true; + } + }); + }); + </script> +</div> +<div> + <ul uk-accordion="multiple: true" id="property-descriptors"> + {{ range .Params.propertyDescriptors }} + <li class="property-descriptor"> + <a class="uk-accordion-title" href> + <span class="{{ if .required }}property-required{{ end }}">{{ .displayName }}</span> + <div class="uk-width-2-3 uk-align-right uk-margin-remove uk-text-truncate uk-text-lighter">{{ .description }}</div> + </a> + <div class="uk-accordion-content uk-padding-small property-descriptor-content"> + <dl class="uk-description-list"> + <dt>Display Name</dt> + <dd>{{ .displayName }}</dd> + <dt>Description</dt> + <dd>{{ .description }}</dd> + <dt>API Name</dt> + <dd>{{ .name }}</dd> + {{ if .defaultValue }} + <dt>Default Value</dt> + <dd>{{ .defaultValue }}</dd> + {{ end }} + {{ if .allowableValues }} + <dt>Allowable Values</dt> + <dd> + <ul> + {{ range .allowableValues }} + <li> + {{ .displayName }} + {{ if .description -}} + <span uk-icon="info" uk-tooltip="{{ .description }}"></span> + {{- end -}} + </li> + {{ end }} + </ul> + </dd> + {{ end }} + {{ if .typeProvidedByValue }} + <dt>Service Interface</dt> + <dd>{{ .typeProvidedByValue.type }}</dd> + + {{ $serviceInterface := .typeProvidedByValue.type }} + + <dt>Service Implementations</dt> + <dd> + {{ range $controllerServices }} + {{ $serviceImplementation := .Params.type }} + {{ range .Params.providedApiImplementations }} + {{ if eq .type $serviceInterface }} + <div><a href="/components/{{ $serviceImplementation }}/">{{ $serviceImplementation }}</a></div> + {{ end }} + {{ end }} + {{ end }} + </dd> + + {{ end }} + <dt>Expression Language Scope</dt> + <dd>{{ .expressionLanguageScopeDescription }}</dd> + <dt>Sensitive</dt> + <dd>{{ .sensitive }}</dd> + <dt>Required</dt> + <dd>{{ .required }}</dd> + {{ if .dependencies }} + <dt>Dependencies</dt> + <dd> + <ul> + {{ range .dependencies }} + <li> + <span>{{ .propertyDisplayName }}</span> + <span class="uk-text-light">is set to any + {{ if .dependentValues }} + of + {{ else }} + value specified + {{ end }} + </span> + {{ if .dependentValues }} + [{{- range $index, $dependentValue := .dependentValues -}} + {{- if $index }}, {{ end }}{{ $dependentValue -}} + {{ end }}] + {{ end }} + </li> + {{ end }} + </ul> + </dd> + {{ end }} + </dl> + </div> + </li> + {{ end }} + </ul> +</div> + +{{ if .Params.dynamicProperties }} +<div class="uk-margin uk-flex"> + <div class="component-section-header uk-width-3-4">Dynamic Properties</div> + <div class="uk-width-1-4 uk-text-right"> + <button uk-icon="icon: expand" uk-tooltip="Expand Properties" id="expand-dynamic-properties" class="uk-button uk-button-link uk-button-small"></button> + <button uk-icon="icon: shrink" uk-tooltip="Collapse Properties" id="shrink-dynamic-properties" class="uk-button uk-button-link uk-button-small"></button> + </div> + <script type="text/javascript"> + document.addEventListener('uikit:init', () => { + var expand = document.getElementById('expand-dynamic-properties'); + expand.addEventListener('click', () => { + var descriptors = document.getElementsByClassName('dynamic-property-content'); + for (var i = 0; i < descriptors.length; i++) { + var descriptor = descriptors[i]; + descriptor.hidden = false; + } + }); + + var shrink = document.getElementById('shrink-dynamic-properties'); + shrink.addEventListener('click', () => { + var descriptors = document.getElementsByClassName('dynamic-property-content'); + for (var i = 0; i < descriptors.length; i++) { + var descriptor = descriptors[i]; + descriptor.hidden = true; + } + }); + }); + </script> +</div> +<div> + <ul uk-accordion="multiple: true" id="dynamic-properties"> + {{ range .Params.dynamicProperties }} + <li class="property-descriptor"> + <a class="uk-accordion-title" href> + <span>{{ .name }}</span> + <div class="uk-width-2-3 uk-align-right uk-margin-remove uk-text-truncate uk-text-lighter">{{ .description }}</div> + </a> + <div class="uk-accordion-content uk-padding-small dynamic-property-content"> + <dl class="uk-description-list"> + <dt>Name</dt> + <dd>{{ .name }}</dd> + <dt>Description</dt> + <dd>{{ .description }}</dd> + <dt>Value</dt> + <dd>{{ .value }}</dd> + <dt>Expression Language Scope</dt> + <dd>{{ .expressionLanguageScope }}</dd> + </dl> + </div> + </li> + {{ end }} + </ul> +</div> +{{ end }} + +{{ if .Params.stateful }} +<div class="component-section-header uk-margin">State Management</div> +<div> + <table class="uk-table uk-table-small uk-table-divider uk-box-shadow-small"> + <thead> + <tr> + <th class="uk-width-1-4">Scopes</th> + <th class="uk-width-3-4">Description</th> + </tr> + </thead> + <tbody> + <tr> + <td> + {{- range $index, $scope := .Params.stateful.scopes -}} + {{- if $index }}, {{ end }}{{ $scope }} + {{- end -}} + </td> + <td class="uk-text-lighter">{{ .Params.stateful.description }}</td> + </tr> + </tbody> + </table> +</div> +{{ end }} + +{{ if .Params.systemResourceConsiderations }} +<div class="component-section-header uk-margin">System Resource Considerations</div> +<div> + <table class="uk-table uk-table-small uk-table-divider uk-box-shadow-small"> + <thead> + <tr> + <th class="uk-width-1-4">Resource</th> + <th class="uk-width-3-4">Description</th> + </tr> + </thead> + <tbody> + {{ range .Params.systemResourceConsiderations }} + <tr> + <td>{{ .resource }}</td> + <td class="uk-text-lighter">{{ .description }}</td> + </tr> + {{ end }} + </tbody> + </table> +</div> +{{ end }} + +{{ if .Params.explicitRestrictions }} +<div class="component-section-header uk-margin">Restrictions</div> +<div> + <table class="uk-table uk-table-small uk-table-divider uk-box-shadow-small"> + <thead> + <tr> + <th class="uk-width-1-4">Required Permission</th> + <th class="uk-width-3-4">Explanation</th> + </tr> + </thead> + <tbody> + {{ range .Params.explicitRestrictions }} + <tr> + <td>{{ .requiredPermission }}</td> + <td class="uk-text-lighter">{{ .explanation }}</td> + </tr> + {{ end }} + </tbody> + </table> +</div> +{{ end }} + +{{ if .Params.supportedRelationships }} +<div class="component-section-header uk-margin">Relationships</div> +<div> + <table class="uk-table uk-table-small uk-table-divider uk-box-shadow-small"> + <thead> + <tr> + <th class="uk-width-1-4">Name</th> + <th class="uk-width-3-4">Description</th> + </tr> + </thead> + <tbody> + {{ range .Params.supportedRelationships }} + <tr> + <td>{{ .name }}</td> + <td class="uk-text-lighter">{{ .description }}</td> + </tr> + {{ end }} + </tbody> + </table> +</div> +{{ end }} + +{{ if .Params.readsAttributes }} +<div class="component-section-header uk-margin">Reads Attributes</div> +<div> + <table class="uk-table uk-table-small uk-table-divider uk-box-shadow-small"> + <thead> + <tr> + <th class="uk-width-1-4">Name</th> + <th class="uk-width-3-4">Description</th> + </tr> + </thead> + <tbody> + {{ range .Params.readsAttributes }} + <tr> + <td>{{ .name }}</td> + <td class="uk-text-lighter">{{ .description }}</td> + </tr> + {{ end }} + </tbody> + </table> +</div> +{{ end }} + +{{ if .Params.writesAttributes }} +<div class="component-section-header uk-margin">Writes Attributes</div> +<div> + <table class="uk-table uk-table-small uk-table-divider uk-box-shadow-small"> + <thead> + <tr> + <th class="uk-width-1-4">Name</th> + <th class="uk-width-3-4">Description</th> + </tr> + </thead> + <tbody> + {{ range .Params.writesAttributes }} + <tr> + <td>{{ .name }}</td> + <td class="uk-text-lighter">{{ .description }}</td> + </tr> + {{ end }} + </tbody> + </table> +</div> +{{ end }} + +{{ if .Params.useCases }} +<div class="uk-margin"> + <div class="component-section-header">Use Cases</div> +</div> +<div> + <ul uk-accordion="multiple: true" id="use-cases"> + {{ range .Params.useCases }} + <li class="description"> + <a class="uk-accordion-title" href> + <div class="uk-margin-remove uk-text-truncate uk-text-light">{{ .description }}</div> + </a> + <div class="uk-accordion-content uk-padding-small"> + <dl class="uk-description-list"> + <dt>Description</dt> + <dd>{{ .description }}</dd> + {{ if .notes }} + <dt>Notes</dt> + <dd>{{ .notes }}</dd> + {{ end }} + {{ if .keywords }} + <dt>Keywords</dt> + <dd> + {{- range $index, $keyword := .keywords -}} + {{- if $index }}, {{ end }}{{ $keyword }} + {{- end -}} + </dd> + {{ end }} + <dt>Configuration</dt> + <dd><pre class="use-case-configuration">{{ .configuration }}</pre></dd> + </dl> + </div> + </li> + {{ end }} + </ul> +</div> +{{ end }} + +{{ if .Params.multiProcessorUseCases }} +<div class="uk-margin"> + <div class="component-section-header">Use Cases Involving Other Components</div> +</div> +<div> + <ul uk-accordion="multiple: true" id="multi-processor-use-cases"> + {{ range .Params.multiProcessorUseCases }} + <li class="description"> + <a class="uk-accordion-title" href> + <div class="uk-margin-remove uk-text-truncate uk-text-light">{{ .description }}</div> + </a> + <div class="uk-accordion-content uk-padding-small"> + <dl class="uk-description-list"> + <dt>Description</dt> + <dd>{{ .description }}</dd> + {{ if .notes }} + <dt>Notes</dt> + <dd>{{ .notes }}</dd> + {{ end }} + {{ if .keywords }} + <dt>Keywords</dt> + <dd> + {{- range $index, $keyword := .keywords -}} + {{- if $index }}, {{ end }}{{ $keyword }} + {{- end -}} + </dd> + {{ end }} + <dt>Processor Configurations</dt> + <dd> + {{ range .configurations }} + <div class="uk-margin-top">{{ .processorClassName }}</div> + <pre class="use-case-configuration">{{ .configuration }}</pre> + {{ end }} + </dd> + </dl> + </div> + </li> + {{ end }} + </ul> +</div> + +{{ end }} + +{{ if .Params.seeAlso }} +<div class="component-section-header uk-margin">See Also</div> +<ul> + {{ range .Params.seeAlso }} + <li> + <a href="/components/{{ . }}/">{{ . }}</a> + </li> + {{ end }} +</ul> +{{ end }} \ No newline at end of file diff --git a/themes/nifi/layouts/section/components.html b/themes/nifi/layouts/section/components.html new file mode 100644 index 00000000..4e355ce4 --- /dev/null +++ b/themes/nifi/layouts/section/components.html @@ -0,0 +1,141 @@ +{{ define "main" }} + {{ $pageTitle := .Title }} + <div uk-grid> + + <div class="uk-width-1-4@m"> + <div class="uk-padding-small uk-panel-scrollable" uk-height-viewport="offset-bottom: 150px"> + <ul uk-accordion="collapsible: false"> + <li> + <a class="uk-accordion-title" href>General</a> + <div class="uk-accordion-content"> + <ul class="uk-list uk-list-collapse uk-text-light uk-text-truncate component-items"> + <li><a href="{{ .Site.Params.staticDocsPath }}/overview.html" target="_blank">Overview</a></li> + <li><a href="{{ .Site.Params.staticDocsPath }}/getting-started.html" target="_blank">Getting Started</a></li> + <li><a href="{{ .Site.Params.staticDocsPath }}/user-guide.html" target="_blank">User Guide</a></li> + <li><a href="{{ .Site.Params.staticDocsPath }}/expression-language-guide.html" target="_blank">Expression Language Guide</a></li> + <li><a href="{{ .Site.Params.staticDocsPath }}/record-path-guide.html" target="_blank">RecordPath Guide</a></li> + <li><a href="{{ .Site.Params.staticDocsPath }}/administration-guide.html" target="_blank">Admin Guide</a></li> + <li><a href="{{ .Site.Params.staticDocsPath }}/toolkit-guide.html" target="_blank">Toolkit Guide</a></li> + <li><a href="{{ .Site.Params.staticDocsPath }}/walkthroughs.html" target="_blank">Walkthroughs</a></li> + </ul> + </div> + </li> + </ul> + + <ul uk-accordion="collapsible: false"> + <li> + <a class="uk-accordion-title" href>Developer</a> + <div class="uk-accordion-content"> + <ul class="uk-list uk-list-collapse uk-text-light uk-text-truncate component-items"> + <li><a href="{{ .Site.Params.staticDocsPath }}/developer-guide.html">Developer Guide</a></li> + <li><a href="{{ .Site.Params.staticDocsPath }}/python-developer-guide.html">Python Developer Guide</a></li> + <li><a href="{{ .Site.Params.staticDocsPath }}/nifi-in-depth.html">Apache NiFi In Depth</a></li> + </ul> + </div> + </li> + </ul> + + <ul uk-accordion="collapsible: false"> + <li> + <a class="uk-accordion-title" href>Processors</a> + <div class="uk-accordion-content"> + {{ $processors := where .Site.Pages "Params.componentType" "processors" }} + <ul class="uk-list uk-list-collapse uk-text-light uk-text-truncate component-items"> + {{ range $processors }} + <li {{ if eq .Title $pageTitle }}class="uk-text-bold" id="component-selected"{{ end }}> + <a href="{{ .RelPermalink }}">{{ .Title }}</a> + </li> + {{ end }} + </ul> + </div> + </li> + </ul> + + <ul uk-accordion="collapsible: false"> + <li> + <a class="uk-accordion-title" href>Controller Services</a> + <div class="uk-accordion-content"> + {{ $controllerServices := where .Site.Pages "Params.componentType" "controller-services" }} + <ul class="uk-list uk-list-collapse uk-text-light uk-text-truncate component-items"> + {{ range $controllerServices }} + <li {{ if eq .Title $pageTitle }}class="uk-text-bold" id="component-selected"{{ end }}> + <a href="{{ .RelPermalink }}">{{ .Title }}</a> + </li> + {{ end }} + </ul> + </div> + </li> + </ul> + + <ul uk-accordion="collapsible: false"> + <li> + <a class="uk-accordion-title" href>Reporting Tasks</a> + <div class="uk-accordion-content"> + {{ $reportingTasks := where .Site.Pages "Params.componentType" "reporting-tasks" }} + <ul class="uk-list uk-list-collapse uk-text-light uk-text-truncate component-items"> + {{ range $reportingTasks }} + <li {{ if eq .Title $pageTitle }}class="uk-text-bold" id="component-selected"{{ end }}> + <a href="{{ .RelPermalink }}">{{ .Title }}</a> + </li> + {{ end }} + </ul> + </div> + </li> + </ul> + + <ul uk-accordion="collapsible: false"> + <li> + <a class="uk-accordion-title" href>Parameter Providers</a> + <div class="uk-accordion-content"> + {{ $parameterProviders := where .Site.Pages "Params.componentType" "parameter-providers" }} + <ul class="uk-list uk-list-collapse uk-text-light uk-text-truncate component-items"> + {{ range $parameterProviders }} + <li {{ if eq .Title $pageTitle }}class="uk-text-bold" id="component-selected"{{ end }}> + <a href="{{ .RelPermalink }}">{{ .Title }}</a> + </li> + {{ end }} + </ul> + </div> + </li> + </ul> + + <ul uk-accordion="collapsible: false"> + <li> + <a class="uk-accordion-title" href>Flow Analysis Rules</a> + <div class="uk-accordion-content"> + {{ $flowAnalysisRules := where .Site.Pages "Params.componentType" "flow-analysis-rules" }} + <ul class="uk-list uk-list-collapse uk-text-light uk-text-truncate component-items"> + {{ range $flowAnalysisRules }} + <li {{ if eq .Title $pageTitle }}class="uk-text-bold" id="component-selected"{{ end }}> + <a href="{{ .RelPermalink }}">{{ .Title }}</a> + </li> + {{ end }} + </ul> + </div> + </li> + </ul> + </div> + + <script type="text/javascript"> + var componentSelected = document.getElementById('component-selected'); + componentSelected.scrollIntoView(); + </script> + </div> + + <div id="component-panel" class="uk-width-3-4@m"> + <div class="uk-padding-small uk-panel-scrollable" uk-height-viewport="offset-bottom: 150px"> + {{ if .Params.artifact }} + {{ partial "component.html" . }} + {{ else }} + <h3>Overview</h3> + <p> + Apache NiFi is a dataflow system based on the concepts of flow-based programming. It supports powerful and scalable directed graphs of data routing, transformation, and system mediation + logic. NiFi has a web-based user interface for design, control, feedback, and monitoring of dataflows. It is highly configurable along several dimensions of quality of service, such as + loss-tolerant versus guaranteed delivery, low latency versus high throughput, and priority-based queuing. NiFi provides fine-grained data provenance for all data received, forked, joined + cloned, modified, sent, and ultimately dropped upon reaching its configured end-state. + </p> + {{ end }} + </div> + </div> + </div> +{{ end }} diff --git a/themes/nifi/static/css/main.css b/themes/nifi/static/css/main.css index 386f5a11..e2262c19 100644 --- a/themes/nifi/static/css/main.css +++ b/themes/nifi/static/css/main.css @@ -10,19 +10,6 @@ footer { padding: 60px 0px 40px 0px; } -table tr td, -table tr th { - text-align: left; - padding: 12px 24px; -} - -table tr td:first-child, -table tr th:first-child { - padding-left: 0; -} - - - a { color: #004849; } @@ -355,4 +342,47 @@ footer h3 { .uk-card img { width: 40%; -} \ No newline at end of file +} + +.component-items li { + margin-left: 10px; +} + +@media (width > 960px) { + #component-panel { + padding-left: 0px; + } +} + +.component-section-header { + color: #333; + font-size: .875rem; + font-weight: 400; + text-transform: uppercase; +} + +.uk-accordion-title { + font-size: 16px; +} + +.uk-accordion > .property-descriptor { + margin: 0px; + padding: 10px; + border: 1px solid #eee; +} + +.property-required { + font-weight: bold; +} + +.uk-accordion > .description { + margin: 0px; + padding: 10px; + border: 1px solid #eee; +} + +.use-case-configuration { + border: none; + white-space: pre-wrap; + margin: 0px; +}
