NgServerMessages

Size
3,106 Kb
Views
20,240

How do I make an ngservermessages?

Intercept a specific http request, show a loading message and a specific http status messages.. What is a ngservermessages? How do you make a ngservermessages? This script and codes were developed by Sébastien Lombard on 16 September 2022, Friday.

NgServerMessages Previews

NgServerMessages - Script Codes HTML Codes

<!DOCTYPE html>
<html >
<head> <meta charset="UTF-8"> <title>ngServerMessages</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css"> <link rel='stylesheet prefetch' href='http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css'>
<link rel='stylesheet prefetch' href='https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.2.0/css/font-awesome.min.css'>
</head>
<body> <div ng-app="MyApp" ng-controller="MainCtrl as main" class="container text-center"> <h1>ngServerMessages</h1> <hr> <p> Intercept a specific http request, show a loading message and a specific http status messages. </p> <hr> <h2>Demos</h2> <div class="row"> <div class="col-sm-6"> <h4>Alert box</h4> <div class="row"> <form name="box200" ng-submit="main.box200()" novalidate class="col-xs-6"> <button type="submit" class="btn btn-success">Call a 200</button> <br><br> <!-- Loading + 200 --> <div ng-server-messages="bloc200"> <div ng-server-message-loading class="alert"> <i class="fa fa-refresh fa-spin"></i> Loading... </div> <div ng-server-message="200" class="alert alert-success"> <i class="fa fa-check"></i> Yeah :D </div> </div> </form> <form name="box419" ng-submit="main.box419()" novalidate class="col-xs-6"> <button type="submit" class="btn btn-danger">Call a 419</button> <br><br> <!-- Loading + 419 --> <div ng-server-messages="bloc419"> <div ng-server-message-loading class="alert"> <i class="fa fa-refresh fa-spin"></i> Loading... </div> <div ng-server-message="419" class="alert alert-danger"> <i class="fa fa-times"></i> Hooo :( </div> </div> </form> </div> </div> <div class="col-sm-6"> <h4>Dynamic buttons</h4> <div class="row"> <form name="btn200" ng-submit="main.btn200()" novalidate class="col-xs-6"> <!-- Loading + 200 --> <div ng-server-messages="btn200"> <div ng-server-message-default> <button type="submit" class="btn btn-primary">Call a 200</button> </div> <div ng-server-message-loading> <button class="btn btn-link"><i class="fa fa-refresh fa-spin"></i> Loading...</button> </div> <div ng-server-message="200"> <button class="btn btn-success"><i class="fa fa-check"></i> Yeah :D</button> </div> </div> </form> <form name="btn200" ng-submit="main.btn419()" novalidate class="col-xs-6"> <!-- Loading + 419 --> <div ng-server-messages="btn419"> <div ng-server-message-default> <button type="submit" class="btn btn-primary">Call a 419</button> </div> <div ng-server-message-loading> <button class="btn btn-link"><i class="fa fa-refresh fa-spin"></i> Loading...</button> </div> <div ng-server-message="419"> <button class="btn btn-danger"><i class="fa fa-times"></i> Hooo :(</button> </div> </div> </form> </div> </div> </div> <hr class="clearfix"> <h4><a href="https://github.com/Seb-L/ngServerMessages" target="_blank"><i class="fa fa-github"></i> Github repository</a></h4>
</div> <script src='http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.14/angular.min.js'></script> <script src="js/index.js"></script>
</body>
</html>

NgServerMessages - Script Codes JS Codes

'use strict';
angular.module('MyApp', ['ngServerMessages']) .controller('MainCtrl', function($scope, $http) { var main = this; main.box200 = function() { $http({ method: 'GET', url: 'http://private-5fbc2-sebl.apiary-mock.com/notes', headers: { 'X-ng-service-name': 'bloc200' } }); }; main.box419 = function() { $http({ method: 'GET', url: 'http://private-5fbc2-sebl.apiary-mock.com/notesbadrequest', headers: { 'X-ng-service-name': 'bloc419' } }); };	main.btn200 = function() { $http({ method: 'GET', url: 'http://private-5fbc2-sebl.apiary-mock.com/notes', headers: { 'X-ng-service-name': 'btn200' } }); };	main.btn419 = function() { $http({ method: 'GET', url: 'http://private-5fbc2-sebl.apiary-mock.com/notesbadrequest', headers: { 'X-ng-service-name': 'btn419' } }); }; })
angular.module('ngServerMessages', [])
// Intercept http request and broadcast events
.config(function($httpProvider) { $httpProvider.interceptors.push(function($rootScope, $q) { return { 'request': function(config) { $rootScope.$broadcast('server.request.ok', config); return config; }, 'requestError': function(rejection) { $rootScope.$broadcast('server.start.error', rejection); return $q.reject(rejection); }, 'response': function(response) { $rootScope.$broadcast('server.response.ok', response); return response; }, 'responseError': function(rejection) { $rootScope.$broadcast('server.response.error', rejection); return $q.reject(rejection); } } });
})
// Parent directive to get the current endpoint
.directive('ngServerMessages', function() { return { restrict: 'A', require: 'ngServerMessages', controller: function($scope, $attrs, $rootScope) { this.endpoint = $attrs.ngServerMessages; } };
})
// Handle messages visibility based on http status
.directive('ngServerMessage', function() { return { restrict: 'A', require: '^ngServerMessages', link: function(scope, element, attrs, ctrl) { element.css({ 'display': 'none' }); scope.$on('server.request.ok', function(event, args) { process(args.headers['X-ng-service-name'], null, true); }); scope.$on('server.response.ok', function(event, args) { process(args.config.headers['X-ng-service-name'], args.status); }); scope.$on('server.response.error', function(event, args) { process(args.config.headers['X-ng-service-name'], args.status); }); function process(name, status, forceHidden) { var endpoint = name; if (endpoint === ctrl.endpoint) { if (status === parseInt(attrs.ngServerMessage)) { element.css({ 'display': 'block' }); } if (!!forceHidden) { element.css({ 'display': 'none' }); } } } } };
})
// Handle loading message visibility
.directive('ngServerMessageLoading', function() { return { restrict: 'A', require: '^ngServerMessages', link: function(scope, element, attrs, ctrl) { element.css({'display': 'none'}); scope.$on('server.request.ok', function(event, args) { toggle(args.headers['X-ng-service-name'], true); }); scope.$on('server.response.ok', function(event, args) { toggle(args.config.headers['X-ng-service-name'], false); }); scope.$on('server.response.error', function(event, args) { toggle(args.config.headers['X-ng-service-name'], false); }); function toggle(name, vivibility) { if (name === ctrl.endpoint) { vivibility ? element.css({'display': 'block'}) : element.css({'display': 'none'}); } } } };
})
// Handle loading message visibility
.directive('ngServerMessageDefault', function() { return { restrict: 'A', require: '^ngServerMessages', link: function(scope, element, attrs, ctrl) { element.css({'display': 'block'}); scope.$on('server.request.ok', function(event, args) { process(args.headers['X-ng-service-name']); }); scope.$on('server.response.ok', function(event, args) { process(args.config.headers['X-ng-service-name']); }); scope.$on('server.response.error', function(event, args) { process(args.config.headers['X-ng-service-name']); }); function process(name) { if (name === ctrl.endpoint) { element.css({'display': 'none'}); } } } };
});
NgServerMessages - Script Codes
NgServerMessages - Script Codes
Home Page Home
Developer Sébastien Lombard
Username SebL
Uploaded September 16, 2022
Rating 3
Size 3,106 Kb
Views 20,240
Do you need developer help for NgServerMessages?

Find the perfect freelance services for your business! Fiverr's mission is to change how the world works together. Fiverr connects businesses with freelancers offering digital services in 500+ categories. Find Developer!

Sébastien Lombard (SebL) Script Codes
Create amazing web content with AI!

Jasper is the AI Content Generator that helps you and your team break through creative blocks to create amazing, original content 10X faster. Discover all the ways the Jasper AI Content Platform can help streamline your creative workflows. Start For Free!