aboutsummaryrefslogtreecommitdiffstats
path: root/src/Widgets.js.orig
diff options
context:
space:
mode:
Diffstat (limited to 'src/Widgets.js.orig')
-rw-r--r--src/Widgets.js.orig764
1 files changed, 764 insertions, 0 deletions
diff --git a/src/Widgets.js.orig b/src/Widgets.js.orig
new file mode 100644
index 00000000..df1d3e40
--- /dev/null
+++ b/src/Widgets.js.orig
@@ -0,0 +1,764 @@
+ // Copyright (C) 2009 BRAT Tech LLC
+
+
+nglr.WidgetFactory = function(serverUrl) {
+ this.nextUploadId = 0;
+ this.serverUrl = serverUrl;
+ this.createSWF = swfobject.createSWF;
+ this.onChangeListener = function(){};
+};
+
+nglr.WidgetFactory.prototype.createController = function(input, scope) {
+ var controller;
+ var type = input.attr('type').toLowerCase();
+ var exp = input.attr('name');
+ if (exp) exp = exp.split(':').pop();
+ var event = "change";
+ var bubbleEvent = true;
+ if (type == 'button' || type == 'submit' || type == 'reset') {
+ controller = new nglr.ButtonController(input[0], exp);
+ event = "click";
+ bubbleEvent = false;
+ } else if (type == 'text' || type == 'textarea') {
+ controller = new nglr.TextController(input[0], exp);
+ event = "keyup change";
+ } else if (type == 'checkbox') {
+ controller = new nglr.CheckboxController(input[0], exp);
+ event = "click";
+ } else if (type == 'radio') {
+ controller = new nglr.RadioController(input[0], exp);
+ event="click";
+ } else if (type == 'select-one') {
+ controller = new nglr.SelectController(input[0], exp);
+ } else if (type == 'select-multiple') {
+ controller = new nglr.MultiSelectController(input[0], exp);
+ } else if (type == 'file') {
+ controller = this.createFileController(input, exp);
+ } else {
+ throw 'Unknown type: ' + type;
+ }
+ input.data('controller', controller);
+ var binder = scope.get('$binder');
+ var action = function() {
+ if (controller.updateModel(scope)) {
+ var action = jQuery(controller.view).attr('ng-action') || "";
+ if (scope.evalWidget(controller, action)) {
+ binder.updateView(scope);
+ }
+ }
+ return bubbleEvent;
+ };
+ jQuery(controller.view, ":input").
+ bind(event, action);
+ return controller;
+};
+
+nglr.WidgetFactory.prototype.createFileController = function(fileInput) {
+ var uploadId = '__uploadWidget_' + (this.nextUploadId++);
+ var view = nglr.FileController.template(uploadId);
+ fileInput.after(view);
+ var att = {
+ data:this.serverUrl + "/admin/ServerAPI.swf",
+ width:"95", height:"20", align:"top",
+ wmode:"transparent"};
+ var par = {
+ flashvars:"uploadWidgetId=" + uploadId,
+ allowScriptAccess:"always"};
+ var swfNode = this.createSWF(att, par, uploadId);
+ fileInput.remove();
+ var cntl = new nglr.FileController(view, fileInput[0].name, swfNode, this.serverUrl);
+ jQuery(swfNode).data('controller', cntl);
+ return cntl;
+};
+
+nglr.WidgetFactory.prototype.createTextWidget = function(textInput) {
+ var controller = new nglr.TextController(textInput);
+ controller.onChange(this.onChangeListener);
+ return controller;
+};
+
+/////////////////////
+// FileController
+///////////////////////
+
+nglr.FileController = function(view, scopeName, uploader, serverUrl) {
+ this.view = view;
+ this.uploader = uploader;
+ this.scopeName = scopeName;
+ this.uploadUrl = serverUrl + '/upload';
+ this.attachmentBase = serverUrl + '/attachments';
+ this.value = null;
+ this.lastValue = undefined;
+};
+
+nglr.FileController.dispatchEvent = function(id, event, args) {
+ var object = document.getElementById(id);
+ var controller = jQuery(object).data("controller");
+ nglr.FileController.prototype['_on_' + event].apply(controller, args);
+};
+
+nglr.FileController.template = function(id) {
+ return jQuery('<span class="ng-upload-widget">' +
+ '<input type="checkbox" ng-non-bindable="true"/>' +
+ '<object id="' + id + '" />' +
+ '<a></a>' +
+ '<span/>' +
+ '</span>');
+};
+
+nglr.FileController.prototype._on_cancel = function() {
+};
+
+nglr.FileController.prototype._on_complete = function() {
+};
+
+nglr.FileController.prototype._on_httpStatus = function(status) {
+ nglr.alert("httpStatus:" + this.scopeName + " status:" + status);
+};
+
+nglr.FileController.prototype._on_ioError = function() {
+ nglr.alert("ioError:" + this.scopeName);
+};
+
+nglr.FileController.prototype._on_open = function() {
+ nglr.alert("open:" + this.scopeName);
+};
+
+nglr.FileController.prototype._on_progress = function(bytesLoaded, bytesTotal) {
+};
+
+nglr.FileController.prototype._on_securityError = function() {
+ nglr.alert("securityError:" + this.scopeName);
+};
+
+nglr.FileController.prototype._on_uploadCompleteData = function(data) {
+ this.value = nglr.fromJson(data);
+ this.value.url = this.attachmentBase + '/' + this.value.id + '/' + this.value.text;
+ this.view.find("input").attr('checked', true);
+ var scope = this.view.scope();
+ this.updateModel(scope);
+ scope.get('$binder').updateView();
+};
+
+nglr.FileController.prototype._on_select = function(name, size, type) {
+ this.name = name;
+ this.view.find("a").text(name).attr('href', name);
+ this.view.find("span").text(filters.bytes(size));
+ this.upload();
+};
+
+nglr.FileController.prototype.updateModel = function(scope) {
+ var isChecked = this.view.find("input").attr('checked');
+ var value = isChecked ? this.value : null;
+ if (this.lastValue === value) {
+ return false;
+ } else {
+ scope.set(this.scopeName, value);
+ return true;
+ }
+};
+
+nglr.FileController.prototype.updateView = function(scope) {
+ var modelValue = scope.get(this.scopeName);
+ if (modelValue && this.value !== modelValue) {
+ this.value = modelValue;
+ this.view.find("a").
+ attr("href", this.value.url).
+ text(this.value.name);
+ this.view.find("span").text(filters.bytes(this.value.size));
+ }
+ this.view.find("input").attr('checked', !!modelValue);
+};
+
+nglr.FileController.prototype.upload = function() {
+ if (this.name) {
+ this.uploader.uploadFile(this.uploadUrl);
+ }
+};
+
+
+///////////////////////
+// NullController
+///////////////////////
+nglr.NullController = function(view) {this.view = view;};
+nglr.NullController.prototype.updateModel = function() { return true; };
+nglr.NullController.prototype.updateView = function() { };
+nglr.NullController.instance = new nglr.NullController();
+
+
+///////////////////////
+// ButtonController
+///////////////////////
+nglr.ButtonController = function(view) {this.view = view;};
+nglr.ButtonController.prototype.updateModel = function(scope) { return true; };
+nglr.ButtonController.prototype.updateView = function(scope) {};
+
+///////////////////////
+// TextController
+///////////////////////
+nglr.TextController = function(view, exp) {
+ this.view = view;
+ this.exp = exp;
+ this.validator = view.getAttribute('ng-validate');
+ this.required = typeof view.attributes['ng-required'] != "undefined";
+ this.lastErrorText = null;
+ this.lastValue = undefined;
+ this.initialValue = view.value;
+ var widget = view.getAttribute('ng-widget');
+ if (widget === 'datepicker') {
+ jQuery(view).datepicker();
+ }
+};
+
+nglr.TextController.prototype.updateModel = function(scope) {
+ var value = this.view.value;
+ if (this.lastValue === value) {
+ return false;
+ } else {
+ scope.set(this.exp, value);
+ this.lastValue = value;
+ return true;
+ }
+};
+
+nglr.TextController.prototype.updateView = function(scope) {
+ var view = this.view;
+ var value = scope.get(this.exp);
+ if (typeof value === "undefined") {
+ value = this.initialValue;
+ scope.set(this.exp, value);
+ }
+ value = value ? value : '';
+ if (this.lastValue != value) {
+ view.value = value;
+ this.lastValue = value;
+ }
+ var isValidationError = false;
+ view.removeAttribute('ng-error');
+ if (this.required) {
+ isValidationError = !(value && value.length > 0);
+ }
+ var errorText = isValidationError ? "Required Value" : null;
+ if (!isValidationError && this.validator && value) {
+ errorText = scope.validate(this.validator, value);
+ isValidationError = !!errorText;
+ }
+ if (this.lastErrorText !== errorText) {
+ this.lastErrorText = isValidationError;
+ if (errorText !== null) {
+ view.setAttribute('ng-error', errorText);
+ scope.markInvalid(this);
+ }
+ jQuery(view).toggleClass('ng-validation-error', isValidationError);
+ }
+};
+
+///////////////////////
+// CheckboxController
+///////////////////////
+nglr.CheckboxController = function(view, exp) {
+ this.view = view;
+ this.exp = exp;
+ this.lastValue = undefined;
+ this.initialValue = view.checked ? view.value : "";
+};
+
+nglr.CheckboxController.prototype.updateModel = function(scope) {
+ var input = this.view;
+ var value = input.checked ? input.value : '';
+ if (this.lastValue === value) {
+ return false;
+ } else {
+ scope.setEval(this.exp, value);
+ this.lastValue = value;
+ return true;
+ }
+};
+
+nglr.CheckboxController.prototype.updateView = function(scope) {
+ var input = this.view;
+ var value = scope.eval(this.exp);
+ if (typeof value === "undefined") {
+ value = this.initialValue;
+ scope.setEval(this.exp, value);
+ }
+ input.checked = input.value == (''+value);
+};
+
+///////////////////////
+// SelectController
+///////////////////////
+nglr.SelectController = function(view, exp) {
+ this.view = view;
+ this.exp = exp;
+ this.lastValue = undefined;
+ this.initialValue = view.value;
+};
+
+nglr.SelectController.prototype.updateModel = function(scope) {
+ var input = this.view;
+ if (input.selectedIndex < 0) {
+ scope.set(this.exp, null);
+ } else {
+ var value = this.view.value;
+ if (this.lastValue === value) {
+ return false;
+ } else {
+ scope.set(this.exp, value);
+ this.lastValue = value;
+ return true;
+ }
+ }
+};
+
+nglr.SelectController.prototype.updateView = function(scope) {
+ var input = this.view;
+ var value = scope.get(this.exp);
+ if (typeof value === 'undefined') {
+ value = this.initialValue;
+ scope.set(this.exp, value);
+ }
+ if (value !== this.lastValue) {
+ input.value = value ? value : "";
+ this.lastValue = value;
+ }
+};
+
+///////////////////////
+// MultiSelectController
+///////////////////////
+nglr.MultiSelectController = function(view, exp) {
+ this.view = view;
+ this.exp = exp;
+ this.lastValue = undefined;
+ this.initialValue = this.selected();
+};
+
+nglr.MultiSelectController.prototype.selected = function () {
+ var value = [];
+ var options = this.view.options;
+ for ( var i = 0; i < options.length; i++) {
+ var option = options[i];
+ if (option.selected) {
+ value.push(option.value);
+ }
+ }
+ return value;
+};
+
+nglr.MultiSelectController.prototype.updateModel = function(scope) {
+ var value = this.selected();
+ // TODO: This is wrong! no caching going on here as we are always comparing arrays
+ if (this.lastValue === value) {
+ return false;
+ } else {
+ scope.set(this.exp, value);
+ this.lastValue = value;
+ return true;
+ }
+};
+
+nglr.MultiSelectController.prototype.updateView = function(scope) {
+ var input = this.view;
+ var selected = scope.get(this.exp);
+ if (typeof selected === "undefined") {
+ selected = this.initialValue;
+ scope.set(this.exp, selected);
+ }
+ if (selected !== this.lastValue) {
+ var options = input.options;
+ for ( var i = 0; i < options.length; i++) {
+ var option = options[i];
+ option.selected = selected.contains(option.value);
+ }
+ this.lastValue = selected;
+ }
+};
+
+///////////////////////
+// RadioController
+///////////////////////
+nglr.RadioController = function(view, exp) {
+ this.view = view;
+ this.exp = exp;
+ this.lastChecked = undefined;
+ this.lastValue = undefined;
+ this.inputValue = view.value;
+ this.initialValue = view.checked ? view.value : null;
+};
+
+nglr.RadioController.prototype.updateModel = function(scope) {
+ var input = this.view;
+ if (this.lastChecked) {
+ return false;
+ } else {
+ input.checked = true;
+ this.lastValue = scope.set(this.exp, this.inputValue);
+ this.lastChecked = true;
+ return true;
+ }
+};
+
+nglr.RadioController.prototype.updateView = function(scope) {
+ var input = this.view;
+ var value = scope.get(this.exp);
+ if (this.initialValue && typeof value === "undefined") {
+ value = this.initialValue;
+ scope.set(this.exp, value);
+ }
+ if (this.lastValue != value) {
+ this.lastChecked = input.checked = this.inputValue == (''+value);
+ this.lastValue = value;
+ }
+};
+
+///////////////////////
+//ElementController
+///////////////////////
+nglr.BindUpdater = function(view, exp) {
+ this.view = view;
+ this.exp = exp.parseBindings();
+ this.hasError = false;
+ this.scopeSelf = {element:view};
+};
+
+nglr.BindUpdater.toText = function(obj) {
+ var e = nglr.escapeHtml;
+ switch(typeof obj) {
+ case "string":
+ case "boolean":
+ case "number":
+ return e(obj);
+ case "function":
+ return nglr.BindUpdater.toText(obj());
+ case "object":
+ if (nglr.isNode(obj)) {
+ return nglr.outerHTML(obj);
+ } else if (obj && obj.TAG === filters.Meta.TAG) {
+ switch(typeof obj.html) {
+ case "string":
+ case "number":
+ return obj.html;
+ case "function":
+ return obj.html();
+ default:
+ break;
+ }
+ switch(typeof obj.text) {
+ case "string":
+ case "number":
+ return e(obj.text);
+ case "function":
+ return e(obj.text());
+ default:
+ break;
+ }
+ }
+ if (obj === null)
+ return "";
+ return e(nglr.toJson(obj, true));
+ default:
+ return "";
+ }
+};
+
+nglr.BindUpdater.prototype.updateModel = function(scope) {};
+nglr.BindUpdater.prototype.updateView = function(scope) {
+ var html = [];
+ var parts = this.exp;
+ var length = parts.length;
+ for(var i=0; i<length; i++) {
+ var part = parts[i];
+ var binding = part.binding();
+ if (binding) {
+ scope.evalWidget(this, binding, this.scopeSelf, function(value){
+ html.push(nglr.BindUpdater.toText(value));
+ }, function(e, text){
+ nglr.setHtml(this.view, text);
+ });
+ if (this.hasError) {
+ return;
+ }
+ } else {
+ html.push(nglr.escapeHtml(part));
+ }
+ }
+ nglr.setHtml(this.view, html.join(''));
+};
+
+nglr.BindAttrUpdater = function(view, attrs) {
+ this.view = view;
+ this.attrs = attrs;
+};
+
+nglr.BindAttrUpdater.prototype.updateModel = function(scope) {};
+nglr.BindAttrUpdater.prototype.updateView = function(scope) {
+ var jNode = jQuery(this.view);
+ var attributeTemplates = this.attrs;
+ if (this.hasError) {
+ this.hasError = false;
+ jNode.
+ removeClass('ng-exception').
+ removeAttr('ng-error');
+ }
+ var isImage = jNode.is('img');
+ for (var attrName in attributeTemplates) {
+ var attributeTemplate = attributeTemplates[attrName].parseBindings();
+ var attrValues = [];
+ for ( var i = 0; i < attributeTemplate.length; i++) {
+ var binding = attributeTemplate[i].binding();
+ if (binding) {
+ try {
+ var value = scope.eval(binding, {element:jNode[0], attrName:attrName});
+ if (value && (value.constructor !== nglr.array || value.length !== 0))
+ attrValues.push(value);
+ } catch (e) {
+ this.hasError = true;
+ console.error('BindAttrUpdater', e);
+ var jsonError = nglr.toJson(e, true);
+ attrValues.push('[' + jsonError + ']');
+ jNode.
+ addClass('ng-exception').
+ attr('ng-error', jsonError);
+ }
+ } else {
+ attrValues.push(attributeTemplate[i]);
+ }
+ }
+ var attrValue = attrValues.length ? attrValues.join('') : null;
+ if(isImage && attrName == 'src' && !attrValue)
+ attrValue = scope.get('config.server') + '/images/blank.gif';
+ jNode.attr(attrName, attrValue);
+ }
+};
+
+nglr.EvalUpdater = function(view, exp) {
+ this.view = view;
+ this.exp = exp;
+ this.hasError = false;
+};
+nglr.EvalUpdater.prototype.updateModel = function(scope) {};
+nglr.EvalUpdater.prototype.updateView = function(scope) {
+ scope.evalWidget(this, this.exp);
+};
+
+nglr.HideUpdater = function(view, exp) { this.view = view; this.exp = exp; };
+nglr.HideUpdater.prototype.updateModel = function(scope) {};
+nglr.HideUpdater.prototype.updateView = function(scope) {
+ scope.evalWidget(this, this.exp, {}, function(hideValue){
+ var view = jQuery(this.view);
+ if (nglr.toBoolean(hideValue)) {
+ view.hide();
+ } else {
+ view.show();
+ }
+ });
+};
+
+nglr.ShowUpdater = function(view, exp) { this.view = view; this.exp = exp; };
+nglr.ShowUpdater.prototype.updateModel = function(scope) {};
+nglr.ShowUpdater.prototype.updateView = function(scope) {
+ scope.evalWidget(this, this.exp, {}, function(hideValue){
+ var view = jQuery(this.view);
+ if (nglr.toBoolean(hideValue)) {
+ view.show();
+ } else {
+ view.hide();
+ }
+ });
+};
+
+nglr.ClassUpdater = function(view, exp) { this.view = view; this.exp = exp; };
+nglr.ClassUpdater.prototype.updateModel = function(scope) {};
+nglr.ClassUpdater.prototype.updateView = function(scope) {
+ scope.evalWidget(this, this.exp, {}, function(classValue){
+ if (classValue !== null && classValue !== undefined) {
+ this.view.className = classValue;
+ }
+ });
+};
+
+nglr.ClassEvenUpdater = function(view, exp) { this.view = view; this.exp = exp; };
+nglr.ClassEvenUpdater.prototype.updateModel = function(scope) {};
+nglr.ClassEvenUpdater.prototype.updateView = function(scope) {
+ scope.evalWidget(this, this.exp, {}, function(classValue){
+ var index = scope.get('$index');
+ jQuery(this.view).toggleClass(classValue, index % 2 === 1);
+ });
+};
+
+nglr.ClassOddUpdater = function(view, exp) { this.view = view; this.exp = exp; };
+nglr.ClassOddUpdater.prototype.updateModel = function(scope) {};
+nglr.ClassOddUpdater.prototype.updateView = function(scope) {
+ scope.evalWidget(this, this.exp, {}, function(classValue){
+ var index = scope.get('$index');
+ jQuery(this.view).toggleClass(classValue, index % 2 === 0);
+ });
+};
+
+nglr.StyleUpdater = function(view, exp) { this.view = view; this.exp = exp; };
+nglr.StyleUpdater.prototype.updateModel = function(scope) {};
+nglr.StyleUpdater.prototype.updateView = function(scope) {
+ scope.evalWidget(this, this.exp, {}, function(styleValue){
+ jQuery(this.view).attr('style', "").css(styleValue);
+ });
+};
+
+///////////////////////
+// RepeaterUpdater
+///////////////////////
+nglr.RepeaterUpdater = function(view, repeaterExpression, template, prefix) {
+ this.view = view;
+ this.template = template;
+ this.prefix = prefix;
+ this.children = [];
+ var match = repeaterExpression.match(/^\s*(.+)\s+in\s+(.*)\s*$/);
+ if (! match) {
+ throw "Expected ng-repeat in form of 'item in collection' but got '" + repeaterExpression + "'.";
+ }
+ this.itemExp = match[1];
+ this.iteratorExp = match[2];
+};
+
+nglr.RepeaterUpdater.prototype.updateModel = function(scope) {};
+nglr.RepeaterUpdater.prototype.updateView = function(scope) {
+ scope.evalWidget(this, this.iteratorExp, {}, function(iterator){
+ if (!iterator) {
+ iterator = [];
+ if (scope.isProperty(this.iteratorExp)) {
+ scope.set(this.iteratorExp, iterator);
+ }
+ }
+ var iteratorLength = iterator.length;
+ var childrenLength = this.children.length;
+ var cursor = this.view;
+ var time = 0;
+ var child = null;
+ var itemExp = this.itemExp;
+ for ( var i = 0; i < iteratorLength; i++) {
+ if (i < iteratorLength) {
+ if (i < childrenLength) { // reuse children
+ child = this.children[i];
+ child.scope.set(itemExp, iterator[i]);
+ } else { // grow children
+ var name = this.prefix +
+ itemExp + " in " + this.iteratorExp + "[" + i + "]";
+ var childScope = new nglr.Scope(scope.state, name);
+ childScope.set('$index', i);
+ childScope.set(itemExp, iterator[i]);
+ child = { scope:childScope, element:this.template(childScope, this.prefix, i) };
+ cursor.after(child.element);
+ this.children.push(child);
+ }
+ cursor = child.element;
+ var s = new Date().getTime();
+ child.scope.updateView();
+ time += new Date().getTime() - s;
+ }
+ }
+ // shrink children
+ for ( var r = childrenLength; r > iteratorLength; --r) {
+ var unneeded = this.children.pop();
+ unneeded.element.removeNode();
+ }
+ // Special case for option in select
+ if (child && child.element[0].nodeName === "OPTION") {
+ var select = jQuery(child.element[0].parentNode);
+ var cntl = select.data('controller');
+ if (cntl) {
+ cntl.lastValue = undefined;
+ cntl.updateView(scope);
+ }
+ }
+ });
+};
+
+//////////////////////////////////
+// PopUp
+//////////////////////////////////
+
+nglr.PopUp = function(doc) {
+ this.doc = doc;
+};
+
+nglr.PopUp.OUT_EVENT = "mouseleave mouseout click dblclick keypress keyup";
+
+nglr.PopUp.prototype.bind = function () {
+ var self = this;
+ this.doc.find('.ng-validation-error,.ng-exception').
+ live("mouseover", nglr.PopUp.onOver);
+};
+
+nglr.PopUp.onOver = function(e) {
+ nglr.PopUp.onOut();
+ var jNode = jQuery(this);
+ jNode.bind(nglr.PopUp.OUT_EVENT, nglr.PopUp.onOut);
+ var position = jNode.position();
+ var de = document.documentElement;
+ var w = self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
+ var hasArea = w - position.left;
+ var width = 300;
+ var title = jNode.hasClass("ng-exception") ? "EXCEPTION:" : "Validation error...";
+ var msg = jNode.attr("ng-error");
+
+ var x;
+ var arrowPos = hasArea>(width+75) ? "left" : "right";
+ var tip = jQuery(
+ "<div id='ng-callout' style='width:"+width+"px'>" +
+ "<div class='ng-arrow-"+arrowPos+"'/>" +
+ "<div class='ng-title'>"+title+"</div>" +
+ "<div class='ng-content'>"+msg+"</div>" +
+ "</div>");
+ jQuery("body").append(tip);
+ if(arrowPos === 'left'){
+ x = position.left + this.offsetWidth + 11;
+ }else{
+ x = position.left - (width + 15);
+ tip.find('.ng-arrow-right').css({left:width+1});
+ }
+
+ tip.css({left: x+"px", top: (position.top - 3)+"px"});
+ return true;
+};
+
+nglr.PopUp.onOut = function() {
+ jQuery('#ng-callout').
+ unbind(nglr.PopUp.OUT_EVENT, nglr.PopUp.onOut).
+ remove();
+ return true;
+};
+
+//////////////////////////////////
+// Status
+//////////////////////////////////
+
+nglr.Status = function (body) {
+ this.body = body;
+ this.requestCount = 0;
+};
+nglr.Status.ANGULAR = "&lt;a class='ng-angular-logo' href='http://www.getangular.com'&gt;&amp;lt;angular/&amp;gt;&lt;/a&gt;&trade;";
+
+nglr.Status.prototype.beginRequest = function () {
+ if (this.requestCount === 0) {
+<<<<<<< HEAD:public/javascripts/nglr/Widgets.js
+ this.dialogView = jQuery('<div class="ng-dialog" title="'+nglr.ControlBar.ANGULAR+' Server Communication:">Please Wait...<div/><div class="loader"></div></div>');
+=======
+ this.dialogView = jQuery('<div title="'+nglr.Status.ANGULAR+' Server Communication:">Please Wait...<div/></div>');
+ this.progressWidget = this.dialogView.find("div");
+ this.progressWidget.progressbar({value:0});
+>>>>>>> master:public/javascripts/nglr/Widgets.js
+ this.dialogView.dialog({bgiframe:true, minHeight:50, modal:true});
+ this.maxRequestCount = 0;
+ }
+ this.requestCount++;
+ this.maxRequestCount++;
+};
+
+nglr.Status.prototype.endRequest = function () {
+ this.requestCount--;
+ if (this.requestCount === 0) {
+ this.dialogView.dialog("destroy");
+ this.dialogView.remove();
+ this.dialogView = null;
+ }
+};