diff --git a/README.md b/README.md index 68fb010..edeb253 100644 --- a/README.md +++ b/README.md @@ -10,24 +10,25 @@ Given below is the detailed guide and helpful resources to get started with our ## Prerequisite -Latest Android Studio or IntelliJ IDEA or Visual Studio Code +You need the latest version of either Android Studio, IntelliJ IDEA, or VS Code for this -- Setup and Installation - -- We need to install dart +- [Setup and Installation](https://dart.dev/get-dart) +- [Latest version of Dart](https://github.com/dart-lang/sdk/tags) +- Latest version of Android Studio or IntelliJ IDEA or Visual Studio Code +- If using vscode, install the dart and flutter plugin extensions ## Dependency -Add the following to your pom.xml file: +Add the following package to your pubspec.yaml. use [latest](https://pub.dev/packages/contentstack_utils) version of package ```dart - contentstack-util: any +contentstack_utils: any ``` Note: If you are using Contentstack Dart SDK we have already imported contentstack-utils into it. ```dart - contentstack: any +contentstack: any ``` ## Usage @@ -36,100 +37,128 @@ Create Render Option: To render Embedded objects within RTE create renderOption as follows: ```dart -Utils.renderContents(rteArray, localJsonObj, (embeddedObject, metadata) -> { - switch (metadata.getStyleType()) { - case BLOCK: - String title = embeddedObject.getString("title"); - String multi_line = embeddedObject.getString("multi_line"); - return "
" + title + "
" + multi_line + ""; - case INLINE: - String titleInline = embeddedObject.getString("title"); - String mlInline = embeddedObject.getString("multi_line"); - return "" + titleInline + "
" + mlInline + ""; - case LINKED: - String titleLinked = embeddedObject.getString("title"); - String mlLinked = embeddedObject.getString("multi_line"); - return "" + titleLinked + "
" + mlLinked + ""; - case DISPLAY: - String titleDiplayable = embeddedObject.getString("title"); - String mlDiplayable = embeddedObject.getString("multi_line"); - return "" + titleDiplayable + "
" + mlDiplayable + ""; - default: - return null; - } -}); +import 'package:contentstack_utils/src/helper/Metadata.dart'; +import 'package:contentstack_utils/src/model/Option.dart'; + +class OptionDemo implements Option { + @override + String renderMark(String markType, String renderText) { + // TODO: implement renderMark + switch (markType) { + case 'bold': + return '' + renderText + ''; + break; + default: + return ''; + } + } + + @override + String renderNode(nodeType, Map node_obj, callback) { + // TODO: implement renderNode + switch (nodeType) { + case 'paragraph': + String children = callback.renderChildren(node_obj['children']); + return "" + children + '
'; + break; + default: + return ''; + } + } + + @override + String renderOption(Map obj, Metadata metadata) { + switch (metadata.getStyleType) { + case 'block': + return '' + obj['title'] + '
' + obj['multi'] + ''; + break; + case 'inline': + return '' + obj['title'] + '
' + obj['line'] + ''; + break; + case 'link': + return '' + obj['title'] + '
' + obj['key'] + ''; + break; + case 'display': + return '' + obj['title'] + '
' + obj['multi'] + ''; + break; + default: + return ''; + } + } +} + ``` -## Using Contentstack Utils from Contentstack Dart SDK +### Using Contentstack Utils from Contentstack Dart SDK -### Fetch entry/entries including embedded using Contentstack SDK +#### Fetch entry/entries including embedded using Contentstack SDK ```dart - import 'package:contentstack/contentstack.dart' as contentstack; - final stack = contentstack.Stack(apiKey, deliveryToken, environment); - final entry = stack.contentType('contentTypeUid').entry(entryUid: 'entryUid'); - entry..includeEmbeddedItems(); - await entry.fetch().then((response) { - const keyPath = [ "rich_text_editor", "global_rich_multiple.group.rich_text_editor"] - final jsonObject = response['entry']; - Utils.render(jsonObject, keyPath, Option); - }).catchError((error) { - print(error.message.toString()); - }); +import 'package:contentstack/contentstack.dart' as contentstack; +final stack = contentstack.Stack(apiKey, deliveryToken, environment); +final entry = stack.contentType('contentTypeUid').entry(entryUid: 'entryUid'); +entry..includeEmbeddedItems(); +await entry.fetch().then((response) { + const keyPath = [ "rich_text_editor", "global_rich_multiple.group.rich_text_editor"] + final jsonObject = response['entry']; + Utils.render(jsonObject, keyPath, Option); +}).catchError((error) { + print(error.message.toString()); +}); ``` -### Fetch multiple entries including embedded object and render RTE fields +#### Fetch multiple entries including embedded object and render RTE fields ```dart - import 'package:contentstack/contentstack.dart' as contentstack; - final stack = contentstack.Stack(apiKey, deliveryToken, environment); - final query = stack.contentType('contentTypeUid').entry().query(); - await query.find().then((response) { - var entries = response['entries']; - const keyPath = ["rich_text_editor", "global_rich_multiple.group.rich_text_editor"] - entries.forEach((entry){ - Utils.render(entry, keyPath, Option); - }) - }).catchError((error) { - print(error.message.toString()); - }); +import 'package:contentstack/contentstack.dart' as contentstack; +final stack = contentstack.Stack(apiKey, deliveryToken, environment); +final query = stack.contentType('contentTypeUid').entry().query(); +await query.find().then((response) { + var entries = response['entries']; + const keyPath = ["rich_text_editor", "global_rich_multiple.group.rich_text_editor"] + entries.forEach((entry){ + Utils.render(entry, keyPath, Option); + }) +}).catchError((error) { + print(error.message.toString()); +}); ``` -### Supercharged (SRTE) +##### Supercharged (SRTE) ```dart - import 'package:contentstack/contentstack.dart' as contentstack; - final stack = contentstack.Stack(apiKey, deliveryToken, environment); - final query = stack.contentType('contentTypeUid').entry().query(); - await query.find().then((response) { - var entries = response['entries']; - const keyPath = ["rich_text_editor"] - entries.forEach((entry){ - Utils.jsonToHtml(entry, keyPath, Option); - }) - }).catchError((error) { - print(error.message.toString()); - }); +import 'package:contentstack/contentstack.dart' as contentstack; +final stack = contentstack.Stack(apiKey, deliveryToken, environment); +final query = stack.contentType('contentTypeUid').entry().query(); +await query.find().then((response) { + var entries = response['entries']; + const keyPath = ["rich_text_editor"] + entries.forEach((entry){ + Utils.jsonToHtml(entry, keyPath, Option); + }) +}).catchError((error) { + print(error.message.toString()); +}); ``` -### GraphQl SRTE +##### GraphQl Supercharged RTE ```dart - import 'package:contentstack/contentstack.dart' as contentstack; - final stack = contentstack.Stack(apiKey, deliveryToken, environment); - final query = stack.contentType('contentTypeUid').entry().query(); - await query.find().then((response) { - var entries = response['entries']; - const keyPath = ["rich_text_editor"] - entries.forEach((entry){ - GQL.jsonToHtml(entry, keyPath, Option); - }) - }).catchError((error) { - print(error.message.toString()); - }); +import 'package:contentstack/contentstack.dart' as contentstack; +final stack = contentstack.Stack(apiKey, deliveryToken, environment); +final query = stack.contentType('contentTypeUid').entry().query(); +await query.find().then((response) { + var entries = response['entries']; + const keyPath = ["rich_text_editor"] + entries.forEach((entry){ + GQL.jsonToHtml(entry, keyPath, Option); + }) + }).catchError((error) { + print(error.message.toString()); + }); ``` -## Features and bugs +### Features and bugs Please file feature requests and bugs at the [issue tracker][tracker]. diff --git a/coverage_badge.svg b/coverage_badge.svg index c07c552..56e3827 100644 --- a/coverage_badge.svg +++ b/coverage_badge.svg @@ -15,6 +15,6 @@" + children + '
'; + break; + default: + return ''; + } + } + + @override + String renderOption(Map obj, Metadata metadata) { + switch (metadata.getStyleType) { + case 'block': + return '' + obj['title'] + '
' + obj['multi'] + ''; + break; + case 'inline': + return '' + obj['title'] + '
' + obj['line'] + ''; + break; + case 'link': + return '' + obj['title'] + '
' + obj['key'] + ''; + break; + case 'display': + return '' + obj['title'] + '
' + obj['multi'] + ''; + break; + default: + return ''; + } + } +}