diff --git a/example/profiling/bundle.json b/example/profiling/bundle.json new file mode 100644 index 0000000000..b6090717d2 --- /dev/null +++ b/example/profiling/bundle.json @@ -0,0 +1,10 @@ +{ + "extensions": { + "indicators": [ + { + "implementation": "WatchIndicator.js", + "depends": ["$interval", "$rootScope"] + } + ] + } +} \ No newline at end of file diff --git a/example/profiling/src/WatchIndicator.js b/example/profiling/src/WatchIndicator.js new file mode 100644 index 0000000000..61fa917984 --- /dev/null +++ b/example/profiling/src/WatchIndicator.js @@ -0,0 +1,75 @@ +/*global define*/ + +define( + [], + function () { + "use strict"; + + /** + * Updates a count of currently-active Angular watches. + * @constructor + * @param $interval Angular's $interval + */ + function WatchIndicator($interval, $rootScope) { + var watches = 0; + + function count(scope) { + if (scope) { + watches += (scope.$$watchers || []).length; + count(scope.$$childHead); + count(scope.$$nextSibling); + } + } + + function update() { + watches = 0; + count($rootScope); + } + + // Update state every second + $interval(update, 1000); + + // Provide initial state, too + update(); + + return { + /** + * Get the glyph (single character used as an icon) + * to display in this indicator. This will return ".", + * which should appear as a dataflow icon. + * @returns {string} the character of the database icon + */ + getGlyph: function () { + return "A"; + }, + /** + * Get the name of the CSS class to apply to the glyph. + * This is used to color the glyph to match its + * state (one of ok, caution or err) + * @returns {string} the CSS class to apply to this glyph + */ + getGlyphClass: function () { + return undefined; + }, + /** + * Get the text that should appear in the indicator. + * @returns {string} brief summary of connection status + */ + getText: function () { + return "Watches " + watches; + }, + /** + * Get a longer-form description of the current connection + * space, suitable for display in a tooltip + * @returns {string} longer summary of connection status + */ + getDescription: function () { + return ""; + } + }; + } + + return WatchIndicator; + + } +); \ No newline at end of file