aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-web/src/main/js/widgets/old/widget.js
diff options
context:
space:
mode:
Diffstat (limited to 'server/sonar-web/src/main/js/widgets/old/widget.js')
-rw-r--r--server/sonar-web/src/main/js/widgets/old/widget.js101
1 files changed, 101 insertions, 0 deletions
diff --git a/server/sonar-web/src/main/js/widgets/old/widget.js b/server/sonar-web/src/main/js/widgets/old/widget.js
new file mode 100644
index 00000000000..193725cbfd6
--- /dev/null
+++ b/server/sonar-web/src/main/js/widgets/old/widget.js
@@ -0,0 +1,101 @@
+/*global d3:false, SonarWidgets:false */
+/*jshint eqnull:true */
+
+window.SonarWidgets = window.SonarWidgets == null ? {} : window.SonarWidgets;
+
+(function () {
+
+ window.SonarWidgets.Widget = function () {
+ // Set default values
+ this._type = null;
+ this._source = null;
+ this._metricsPriority = null;
+ this._height = null;
+ this._options = {};
+
+
+ // Export global variables
+ this.type = function (_) {
+ return param.call(this, '_type', _);
+ };
+
+ this.source = function (_) {
+ return param.call(this, '_source', _);
+ };
+
+ this.metricsPriority = function (_) {
+ return param.call(this, '_metricsPriority', _);
+ };
+
+ this.height = function (_) {
+ return param.call(this, '_height', _);
+ };
+
+ this.options = function (_) {
+ return param.call(this, '_options', _);
+ };
+ };
+
+
+ window.SonarWidgets.Widget.prototype.render = function(container) {
+ var that = this;
+
+ this.showSpinner(container);
+ d3.json(this.source(), function(error, response) {
+ if (response && !error) {
+ that.hideSpinner();
+ if (typeof response.components === 'undefined' || response.components.length > 0) {
+ that.widget = new SonarWidgets[that.type()]();
+ that.widget.metricsPriority(that.metricsPriority());
+ that.widget.options(that.options());
+ that.widget.metrics(response.metrics);
+ that.widget.components(response.components);
+ if(typeof that.widget.parseSource === 'function') {
+ that.widget.parseSource(response);
+ }
+ if (typeof that.widget.maxResultsReached === 'function') {
+ that.widget.maxResultsReached(response.paging != null && response.paging.pages > 1);
+ }
+ if (that.height()) {
+ that.widget.height(that.height());
+ }
+ that.widget.render(container);
+ } else {
+ d3.select(container).html(that.options().noData);
+ }
+ }
+ });
+ };
+
+
+ window.SonarWidgets.Widget.prototype.showSpinner = function(container) {
+ this.spinner = d3.select(container).append('i').classed('spinner', true);
+ };
+
+
+ window.SonarWidgets.Widget.prototype.hideSpinner = function() {
+ if (this.spinner) {
+ this.spinner.remove();
+ }
+ };
+
+
+ window.SonarWidgets.Widget.prototype.update = function(container) {
+ return this.widget && this.widget.update(container);
+ };
+
+
+
+ // Some helper functions
+
+ // Gets or sets parameter
+ function param(name, value) {
+ if (value == null) {
+ return this[name];
+ } else {
+ this[name] = value;
+ return this;
+ }
+ }
+
+})();