DevMode Javascript Exception Handler
StackOverflow-driven JS development:
try {
something
} catch (e) {
window.open('https://stackoverflow.com/search?q=[js]+"' + e.message + '"');
}
StackOverflow-driven JS development:
try {
something
} catch (e) {
window.open('https://stackoverflow.com/search?q=[js]+"' + e.message + '"');
}
There are situations when you need to analyze user’s experience but can’t use a third-party web analytics solutions like Google Analytics or Yandex Metrika. For example, if your production environment is PCI DSS compliant. In this case you have to deploy self-hosted analytics engine and inside your environment and configure user actions tracking in your application.
One of the possible solutions is the piwik as analytics engine + Angulartics or angular-piwik for tracking events inside AngularJS application. In addition to web analytics features, piwik offers a log analytics.Piwik Demo
Another option is to use Open Web Analytics (OWA) and write a plugin for Angulartics. OWA Demo
Modern web application should be user friendly and notify the User when time consuming operation is on the way, e.g. uploading file or downloading data. There are a some solutions for AngularJS which are fairy easy to integrate.
First one is Angular Loading Bar. It can be attached to your application with almost zero configuration and does not affect application design.
It attaches the interceptor to $http
service and displays a thin progressbar on the top edge of the page.
Demo
Another component is angular-busy. It is more customizable and can show a spinner with backdrop above any page element. Just wrap it with <div cg-busy="..."/>
.
But it may require some customization.
Demo
Also, there are some examples how to add loading indicator to ui-router.
Stay DRY! Don’t waste your time implementing tags input control for AngularJS yourself! There is an excellent AngularJS module for that called “ngTagsInput”. It’s also supports autocomptetion, validations,custom styles and templates. See the demos.
It took me just 10 minutes to add that type of control to my application.
All you need to do is:
npm install ng-tags-input --save
bower install ng-tags-input --save
Include script and CSS to your html page. If you’re using some dependency injection pre-processor like gulp-inject or gulp-ng-inject you don’t need it.
<script src="angular.js"></script>
<script src="ng-tags-input.js"></script>
<link rel="stylesheet" type="text/css" href="ng-tags-input.css">
declare module dependency:
angular.module('myApp', ['ngTagsInput'])
.controller('MyCtrl', function($scope, $http) {
$scope.tags = [
{ text: 'just' },
{ text: 'some' },
{ text: 'cool' },
{ text: 'tags' }
];
$scope.loadTags = function(query) {
return $http.get('/tags?query=' + query);
};
});
Add input control to html
<body ng-app="myApp" ng-controller="MyCtrl">
<tags-input ng-model="tags">
<auto-complete source="loadTags($query)"></auto-complete>
</tags-input>
</body>
Pretty simple, isn’t it?
The only thing to consider is handling of the tags
model. $scope.tags
will be an array of objects on the form {text:value}
. You may need to transfer them to array of strings:
var tagValues = $scope.tags.map(function(input) {return input.text;});
Solari Board is a javascript app for displaying some status information. For example, it can be used to scheduling support team activity or displaying project build status from CI server (e.g. Jenkins)
This article with a video about how the guys from FogCreek software has integrated SolariBoard into BigBoard to monitor their support team activity.
Since it may be references to existing javascript array from other objects, the best way to clear array contents is assign its length to zero