@narando/notifications-parser

0.36.0 • Public • Published

@narando/notifications-parser

A custom error message parser on narando architecture.

Getting Started

You need to have nodejs and npm installed.

$ npm install @narando/notifications-parser

Usage

Parse errors witch were send via the url queries or created as a custom object. The object structure looks like:

// Permission
{
  // Name of error or could be an Array of names
  "errors": "An error occured",
  // Success message can be set while some errors exists.
  "success": true

}

With custom messages

To create an instance of the notifications-parser module you have to import notifications-parser

import notificationsParser from "@narando/notifications-parser";

// You can preconfigure custom error messages.
// If you don't specify custom messages the default messages will be used.
// The custom messages can expand or replace the existing messages.
//
// Example url:
// http://localhost/path?success=true&error=ERRORTYPE1&error=ERRORTYPE2
function getArticles(req, res) {
  const customMessage = {
    ERRORTYPE1: "custom message 1",
    ERRORTYPE1: "custom message 2"
  };

  // Now you can use the parser to set your locals which will be send to your
  // template engine.
  res.locals.notifications = notificationsParser(req.query, customMessage);
  // Returned Object:
  // {
  //   success: "Success!",
  //   errors: "["custom Message 1", "custom message 2"]"
  // }

  res.render(`page/article`, res.locals);
}

Without custom messages

Use the notifications-parser without the custom messages

  // Example url:
  // http://localhost/path?success=true&error=ResourceMissingError
  res.locals.notifications = notificationsParser(req.query);
  // Returned Object:
  // {
  //   success: "Success!",
  //   errors: "["custom Message 1", "Resource is missing!"]"
  // }
}

Show the result with mustache

The messages will be displayed by the following mustache logic. In this case it will display all error messages and a potential success message.

{{#notifications}}

  <div class="container">
    {{#error}}
      <div class="row">
        <div class="alert alert-danger alert-dismissable col-lg-12">
            <button type="button" class="close" data-dismiss="alert" aria-hidden="true"></button>
            {{{.}}}
        </div>
      </div>
    {{/error}}
    {{#success}}
      <div class="row">
        <div class="alert alert-success alert-dismissable col-lg-12">
            <button type="button" class="close" data-dismiss="alert" aria-hidden="true"></button>
            {{{.}}}
        </div>
      </div>
    {{/success}}
  </div>
{{/notifications}}

Flashing some notifications

In case you need to add a new error that is not set in the query you can use the following method.

The function will add a new error to the object with the errors which will be parsed by the notificationsParser

import notificationsParser, {
  flashNotification
} from "@narando/notifications-parser";

// To add a new error to the query.error or your custom object
// You have to use flashNotification.error();
// This function adds the new error to the object.

const newError = "NewError";
flashNotification.error(req.query, newError);

res.locals.notifications = notificationsParser(req.query);

L10n notifications

The default messages are available in German and English (US). The l10n parameter is optional and set to English (US) by default.

Please use the BCP 47 language codes

Get the localized default messages

import notificationsParser from "@narando/notifications-parser";

function getArticles(req, res) {
  // Example url:
  // http://localhost/path?success=true&error=ResourceMissingError
  res.locals.notifications = notificationsParser(req.query, {}, "de-DE");
  // Returned Object:
  // {
  //   success: "Aktion erfolgreich ausgeführt!",
  //   errors: ["Das angefragte Objekt fehlt."]
  // }

  res.render(`page/article`, res.locals);
}

L10n with custom messages

import notificationsParser from "@narando/notifications-parser";

function getArticles(req, res) {
  // Get the custom messages from your l10n function.
  const customMessage = {
    ERRORTYPE1: "Spezifische Nachricht 1",
    ERRORTYPE1: "Spezifische Nachricht 2"
  };

  // Example url:
  // http://localhost/path?success=true&error=ERRORTYPE1&error=ERRORTYPE2
  res.locals.notifications = notificationsParser(
    req.query,
    customMessage,
    "de-DE"
  );
  // Returned Object:
  // {
  // success: "Aktion erfolgreich ausgeführt!",
  // errors: "["Spezifische Nachricht 1", "Spezifische Nachricht 2"]"
  // }

  res.render(`page/article`, res.locals);
}

Package Sidebar

Install

npm i @narando/notifications-parser

Weekly Downloads

0

Version

0.36.0

License

UNLICENSED

Unpacked Size

18.3 kB

Total Files

10

Last publish

Collaborators

  • narandosystem
  • marcmogdanz
  • apricote
  • brandolpho