Ninja Programmers Mindmeld

    @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);
    }

    Install

    npm i @narando/notifications-parser

    DownloadsWeekly Downloads

    55

    Version

    0.36.0

    License

    UNLICENSED

    Unpacked Size

    18.3 kB

    Total Files

    10

    Last publish

    Collaborators

    • narandosystem
    • marcmogdanz
    • apricote
    • brandolpho