public/javascripts/erp_app/utility.js in erp_app-3.0.7 vs public/javascripts/erp_app/utility.js in erp_app-3.0.8
- old
+ new
@@ -1,352 +1,420 @@
Ext.ns("Compass.ErpApp.Utility");
-Compass.ErpApp.Utility.confirmBrowserNavigation = function(additionalmessage){
- additionalmessage = additionalmessage || null;
- window.onbeforeunload = function(){
- return Ext.isEmpty(additionalmessage) ? '' : additionalmessage;
- }
+//handle session timeout
+Compass.ErpApp.Utility.SessionTimeout = {
+ enabled:false,
+ redirectTo:null,
+ warnInMilliseconds:null,
+ warnTimer:null,
+ redirectInMilliseconds:null,
+ redirectTimer:null,
+
+ setForceRedirectTimer:function (action) {
+ switch (action) {
+ case 'start':
+ var self = this;
+ this.redirectTimer = window.setTimeout(function () {
+ window.location = self.redirectTo;
+ }, this.redirectInMilliseconds);
+ break;
+ case 'stop':
+ clearTimeout(this.redirectTimer);
+ break;
+ }
+ },
+ setWarnTimer:function (action) {
+ switch (action) {
+ case 'start':
+ var self = this;
+ this.warnTimer = window.setTimeout(function () {
+ Ext.MessageBox.confirm('Confirm', 'Your session is about to expire due to inactivity. Do you wish to continue this session?', function(btn){
+ if(btn == 'no'){
+ window.location = self.redirectTo;
+ }
+ else
+ if(btn == 'yes')
+ {
+ Ext.Ajax.request({
+ method:'POST',
+ url:'/session/keep_alive',
+ success: function( result, request ){
+ self.reset();
+ }
+ });
+ }
+ });
+ }, this.warnInMilliseconds);
+ break;
+ case 'stop':
+ clearTimeout(this.warnTimer);
+ break;
+ }
+ },
+ setupSessionTimeout:function (warnInMilliseconds, redirectInMilliseconds, redirectTo) {
+ var self = this;
+ Ext.Ajax.addListener('requestcomplete', this.reset, this);
+
+ this.enabled = true;
+ this.redirectTo = redirectTo;
+ this.warnInMilliseconds = warnInMilliseconds;
+ this.redirectInMilliseconds = redirectInMilliseconds;
+
+ this.setForceRedirectTimer('start');
+ this.setWarnTimer('start');
+ },
+ reset:function () {
+ this.setWarnTimer('stop');
+ this.setForceRedirectTimer('stop');
+
+ this.setWarnTimer('start');
+ this.setForceRedirectTimer('start');
+ }
};
+//end handle session timeout
-Compass.ErpApp.Utility.disableEnterSubmission = function(){
- $(function(){
- $("form").bind("keypress", function(e){
- if (e.keyCode == 13) return false;
- });
- });
+Compass.ErpApp.Utility.confirmBrowserNavigation = function (additionalmessage) {
+ additionalmessage = additionalmessage || null;
+ window.onbeforeunload = function () {
+ return Ext.isEmpty(additionalmessage) ? '' : additionalmessage;
+ }
};
-Compass.ErpApp.Utility.evaluateScriptTags = function(element){
- var scriptTags = element.getElementsByTagName("script");
- for(var i=0;i<scriptTags.length;i++){
- eval(scriptTags[i].text);
- }
+Compass.ErpApp.Utility.disableEnterSubmission = function () {
+ $(function () {
+ $("form").bind("keypress", function (e) {
+ if (e.keyCode == 13) return false;
+ });
+ });
};
-Compass.ErpApp.Utility.promptReload = function(){
- Ext.MessageBox.confirm('Confirm', 'Page must reload for changes to take affect. Reload now?', function(btn){
- if(btn == 'no'){
- return false;
+Compass.ErpApp.Utility.evaluateScriptTags = function (element) {
+ var scriptTags = element.getElementsByTagName("script");
+ for (var i = 0; i < scriptTags.length; i++) {
+ eval(scriptTags[i].text);
}
- else{
- window.location.reload();
- }
- });
};
-Compass.ErpApp.Utility.handleFormFailure = function(action){
- switch (action.failureType) {
- case Ext.form.action.Action.CLIENT_INVALID:
- Ext.Msg.alert('Failure', 'Form fields may not be submitted with invalid values');
- break;
- case Ext.form.action.Action.CONNECT_FAILURE:
- Ext.Msg.alert('Failure', 'Ajax communication failed');
- break;
- case Ext.form.action.Action.SERVER_INVALID:
- Ext.Msg.alert('Failure', action.result.msg);
- }
+Compass.ErpApp.Utility.promptReload = function () {
+ Ext.MessageBox.confirm('Confirm', 'Page must reload for changes to take affect. Reload now?', function (btn) {
+ if (btn == 'no') {
+ return false;
+ }
+ else {
+ window.location.reload();
+ }
+ });
};
-Compass.ErpApp.Utility.randomString = function(length) {
+Compass.ErpApp.Utility.handleFormFailure = function (action) {
+ switch (action.failureType) {
+ case Ext.form.action.Action.CLIENT_INVALID:
+ Ext.Msg.alert('Failure', 'Form fields may not be submitted with invalid values');
+ break;
+ case Ext.form.action.Action.CONNECT_FAILURE:
+ Ext.Msg.alert('Failure', 'Ajax communication failed');
+ break;
+ case Ext.form.action.Action.SERVER_INVALID:
+ Ext.Msg.alert('Failure', action.result.msg);
+ }
+};
+
+Compass.ErpApp.Utility.randomString = function (length) {
var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
var randomString = '';
- for (var i=0; i<length; i++) {
+ for (var i = 0; i < length; i++) {
var randomNumber = Math.floor(Math.random() * chars.length);
- randomString += chars.substring(randomNumber,randomNumber+1);
+ randomString += chars.substring(randomNumber, randomNumber + 1);
}
return randomString
};
-Compass.ErpApp.Utility.roundNumber = function(num) {
- var twoDPString = "0.00";
- if(!Compass.ErpApp.Utility.isBlank(num) && !isNaN(num)){
- var dnum = Math.round(num * 100)/100;
- twoDPString = dnum + "";
- if (twoDPString.indexOf(".") == -1) {
- twoDPString += ".00"
- }
- if (twoDPString.indexOf(".") == twoDPString.length-2) {
- twoDPString += "0"
- }
+Compass.ErpApp.Utility.roundNumber = function (num) {
+ var twoDPString = "0.00";
+ if (!Compass.ErpApp.Utility.isBlank(num) && !isNaN(num)) {
+ var dnum = Math.round(num * 100) / 100;
+ twoDPString = dnum + "";
+ if (twoDPString.indexOf(".") == -1) {
+ twoDPString += ".00"
+ }
+ if (twoDPString.indexOf(".") == twoDPString.length - 2) {
+ twoDPString += "0"
+ }
- }
- return twoDPString;
+ }
+ return twoDPString;
};
-Compass.ErpApp.Utility.numbersOnly = function(e, decimal) {
- var key;
- var keychar;
+Compass.ErpApp.Utility.numbersOnly = function (e, decimal) {
+ var key;
+ var keychar;
- if (window.event) {
- key = window.event.keyCode;
- }
- else if (e) {
- key = e.which;
- }
- else {
- return true;
- }
- keychar = String.fromCharCode(key);
+ if (window.event) {
+ key = window.event.keyCode;
+ }
+ else if (e) {
+ key = e.which;
+ }
+ else {
+ return true;
+ }
+ keychar = String.fromCharCode(key);
- if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) ) {
- return true;
- }
- else if ((("0123456789").indexOf(keychar) > -1)) {
- return true;
- }
- else if (decimal && (keychar == ".")) {
- return true;
- }
- else
- return false;
+ if ((key == null) || (key == 0) || (key == 8) || (key == 9) || (key == 13) || (key == 27)) {
+ return true;
+ }
+ else if ((("0123456789").indexOf(keychar) > -1)) {
+ return true;
+ }
+ else if (decimal && (keychar == ".")) {
+ return true;
+ }
+ else
+ return false;
};
//FIXME: This is broken; missing the Ext.ux.util.clone file
-Compass.ErpApp.Utility.clone = function(o) {
- if(!o || 'object' !== typeof o) {
- return o;
- }
- if('function' === typeof o.clone) {
- return o.clone();
- }
- var c = '[object Array]' === Object.prototype.toString.call(o) ? [] : {};
- var p, v;
- for(p in o) {
- if(o.hasOwnProperty(p)) {
- v = o[p];
- if(v && 'object' === typeof v) {
- c[p] = Ext.ux.util.clone(v);
- }
- else {
- c[p] = v;
- }
+Compass.ErpApp.Utility.clone = function (o) {
+ if (!o || 'object' !== typeof o) {
+ return o;
}
- }
- return c;
+ if ('function' === typeof o.clone) {
+ return o.clone();
+ }
+ var c = '[object Array]' === Object.prototype.toString.call(o) ? [] : {};
+ var p, v;
+ for (p in o) {
+ if (o.hasOwnProperty(p)) {
+ v = o[p];
+ if (v && 'object' === typeof v) {
+ c[p] = Ext.ux.util.clone(v);
+ }
+ else {
+ c[p] = v;
+ }
+ }
+ }
+ return c;
};
-Compass.ErpApp.Utility.addCommas = function(nStr)
-{
- nStr += '';
- var x = nStr.split('.');
- var x1 = x[0];
- var x2 = x.length > 1 ? '.' + x[1] : '';
- var rgx = /(\d+)(\d{3})/;
- while (rgx.test(x1)) {
- x1 = x1.replace(rgx, '$1' + ',' + '$2');
- }
- return x1 + x2;
+Compass.ErpApp.Utility.addCommas = function (nStr) {
+ nStr += '';
+ var x = nStr.split('.');
+ var x1 = x[0];
+ var x2 = x.length > 1 ? '.' + x[1] : '';
+ var rgx = /(\d+)(\d{3})/;
+ while (rgx.test(x1)) {
+ x1 = x1.replace(rgx, '$1' + ',' + '$2');
+ }
+ return x1 + x2;
};
-Compass.ErpApp.Utility.isBlank = function(value) {
- return Ext.isEmpty(value);
+Compass.ErpApp.Utility.isBlank = function (value) {
+ return Ext.isEmpty(value);
};
-Compass.ErpApp.Utility.removeDublicates = function(arrayName) {
- var newArray = new Array();
- label:for (var i = 0; i < arrayName.length; i++)
- {
- for (var j = 0; j < newArray.length; j++)
- {
- if (newArray[j].unit_id == arrayName[i].unit_id)
- continue label;
- }
- newArray[newArray.length] = arrayName[i];
+Compass.ErpApp.Utility.removeDublicates = function (arrayName) {
+ var newArray = new Array();
+ label:for (var i = 0; i < arrayName.length; i++) {
+ for (var j = 0; j < newArray.length; j++) {
+ if (newArray[j].unit_id == arrayName[i].unit_id)
+ continue label;
+ }
+ newArray[newArray.length] = arrayName[i];
}
- return newArray;
+ return newArray;
};
-Compass.ErpApp.Utility.isArray = function(o){
- return Object.prototype.toString.call(o) === '[object Array]';
+Compass.ErpApp.Utility.isArray = function (o) {
+ return Object.prototype.toString.call(o) === '[object Array]';
}
-Compass.ErpApp.Utility.wait = function(ms) {
- ms += new Date().getTime();
- while (new Date() < ms){}
+Compass.ErpApp.Utility.wait = function (ms) {
+ ms += new Date().getTime();
+ while (new Date() < ms) {
+ }
};
-Compass.ErpApp.Utility.limitTextArea = function(textArea, limit){
- var value = textArea.value;
- if(value.length > limit){
- textArea.value = value.substring(0, limit);
- }
- return true;
+Compass.ErpApp.Utility.limitTextArea = function (textArea, limit) {
+ var value = textArea.value;
+ if (value.length > limit) {
+ textArea.value = value.substring(0, limit);
+ }
+ return true;
};
-Compass.ErpApp.Utility.formatCurrency = function(num) {
- num = num.toString().replace(/\$|\,/g,'');
- if(isNaN(num))
- num = "0";
- var sign = (num == (num = Math.abs(num)));
- num = Math.floor(num*100+0.50000000001);
- var cents = num%100;
- num = Math.floor(num/100).toString();
- if(cents<10)
- cents = "0" + cents;
- for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
- num = num.substring(0,num.length-(4*i+3))+','+
- num.substring(num.length-(4*i+3));
- return (((sign)?'':'-') + '$' + num + '.' + cents);
+Compass.ErpApp.Utility.formatCurrency = function (num) {
+ num = num.toString().replace(/\$|\,/g, '');
+ if (isNaN(num))
+ num = "0";
+ var sign = (num == (num = Math.abs(num)));
+ num = Math.floor(num * 100 + 0.50000000001);
+ var cents = num % 100;
+ num = Math.floor(num / 100).toString();
+ if (cents < 10)
+ cents = "0" + cents;
+ for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++)
+ num = num.substring(0, num.length - (4 * i + 3)) + ',' +
+ num.substring(num.length - (4 * i + 3));
+ return (((sign) ? '' : '-') + '$' + num + '.' + cents);
};
Compass.ErpApp.Utility.JsLoader = {
- load : function(url, successCallback) {
- this.attempts = 0;
- this.successCallBack = successCallback;
- this.scriptsToLoad = [];
+ load:function (url, successCallback) {
+ this.attempts = 0;
+ this.successCallBack = successCallback;
+ this.scriptsToLoad = [];
- if(!Compass.ErpApp.Utility.isArray(url)){
- url = [url];
- }
+ if (!Compass.ErpApp.Utility.isArray(url)) {
+ url = [url];
+ }
- for(var i=0; i < url.length; i++){
- this.scriptsToLoad.push({
- url:url[i],
- status:'pending'
- });
- }
+ for (var i = 0; i < url.length; i++) {
+ this.scriptsToLoad.push({
+ url:url[i],
+ status:'pending'
+ });
+ }
- for(var t=0; t < this.scriptsToLoad.length; t++){
- this.loadScript(this.scriptsToLoad[t]);
- }
- },
+ for (var t = 0; t < this.scriptsToLoad.length; t++) {
+ this.loadScript(this.scriptsToLoad[t]);
+ }
+ },
- allScriptsDone : function(){
- for(var i=0; i < this.scriptsToLoad.length; i++){
- if (this.scriptsToLoad[i].status == 'pending')
- return false;
- }
- return true;
- },
+ allScriptsDone:function () {
+ for (var i = 0; i < this.scriptsToLoad.length; i++) {
+ if (this.scriptsToLoad[i].status == 'pending')
+ return false;
+ }
+ return true;
+ },
- scriptDone : function(){
- if(this.allScriptsDone()){
- this.onSuccess();
- }
- },
+ scriptDone:function () {
+ if (this.allScriptsDone()) {
+ this.onSuccess();
+ }
+ },
- loadScript : function(scriptToLoad){
- var self = this;
- var ss = document.getElementsByTagName("script");
- for (i = 0;i < ss.length; i++) {
- if (ss[i].src && ss[i].src.indexOf(scriptToLoad.url) != -1)
- {
- scriptToLoad.status = 'success';
- self.scriptDone();
- return;
- }
- }
- var s = document.createElement("script");
- s.type = "text/javascript";
- s.src = scriptToLoad.url;
- var head = document.getElementsByTagName("head")[0];
- head.appendChild(s);
- s.onload = s.onreadystatechange = function()
- {
- if (this.readyState && this.readyState == "loading")
- return;
- scriptToLoad.status = 'success';
- self.scriptDone();
- }
- s.onerror = function() {
- head.removeChild(s);
- scriptToLoad.status = 'failure';
- self.scriptDone();
- }
- },
+ loadScript:function (scriptToLoad) {
+ var self = this;
+ var ss = document.getElementsByTagName("script");
+ for (i = 0; i < ss.length; i++) {
+ if (ss[i].src && ss[i].src.indexOf(scriptToLoad.url) != -1) {
+ scriptToLoad.status = 'success';
+ self.scriptDone();
+ return;
+ }
+ }
+ var s = document.createElement("script");
+ s.type = "text/javascript";
+ s.src = scriptToLoad.url;
+ var head = document.getElementsByTagName("head")[0];
+ head.appendChild(s);
+ s.onload = s.onreadystatechange = function () {
+ if (this.readyState && this.readyState == "loading")
+ return;
+ scriptToLoad.status = 'success';
+ self.scriptDone();
+ }
+ s.onerror = function () {
+ head.removeChild(s);
+ scriptToLoad.status = 'failure';
+ self.scriptDone();
+ }
+ },
- onSuccess : function() {
- this.successCallBack();
- },
- onFailure : function() { }
+ onSuccess:function () {
+ if(!Ext.isEmpty(this.successCallBack) && this.successCallBack){
+ this.successCallBack();
+ }
+ },
+ onFailure:function () {
+ }
};
//Javascript Extensions
//Array Extensions
Array.prototype.contains = function (element) {
- for (var i = 0; i < this.length; i++) {
- if (this[i] == element) {
- return true;
+ for (var i = 0; i < this.length; i++) {
+ if (this[i] == element) {
+ return true;
+ }
}
- }
- return false;
+ return false;
};
Array.prototype.find = function (find_statement) {
- try
- {
- for (var i = 0; i < this.length; i++) {
- var statement = "this[i]." + find_statement;
- if(eval(statement)){
- return this[i];
- }
+ try {
+ for (var i = 0; i < this.length; i++) {
+ var statement = "this[i]." + find_statement;
+ if (eval(statement)) {
+ return this[i];
+ }
+ }
}
- }
- catch(ex){
+ catch (ex) {
+ return null;
+ }
return null;
- }
- return null;
};
Array.prototype.select = function (find_statement) {
- var sub_array = [];
- try
- {
- for (var i = 0; i < this.length; i++) {
- var statement = "this[i]." + find_statement;
- if(eval(statement)){
- sub_array.push(this[i]);
- }
+ var sub_array = [];
+ try {
+ for (var i = 0; i < this.length; i++) {
+ var statement = "this[i]." + find_statement;
+ if (eval(statement)) {
+ sub_array.push(this[i]);
+ }
+ }
}
- }
- catch(ex){
- return null;
- }
- return sub_array;
+ catch (ex) {
+ return null;
+ }
+ return sub_array;
};
-Array.prototype.first = function(){
- if(this[0] == undefined){
- return null;
- }
- else{
- return this[0];
- }
+Array.prototype.first = function () {
+ if (this[0] == undefined) {
+ return null;
+ }
+ else {
+ return this[0];
+ }
};
-Array.prototype.last = function(){
- if(this[this.length-1] == undefined){
- return null;
- }
- else{
- return this[this.length-1];
- }
+Array.prototype.last = function () {
+ if (this[this.length - 1] == undefined) {
+ return null;
+ }
+ else {
+ return this[this.length - 1];
+ }
};
-Array.prototype.collect = function(item){
- var items = [];
- try
- {
- for (var i = 0; i < this.length; i++) {
- items.push(this[i][item]);
+Array.prototype.collect = function (item) {
+ var items = [];
+ try {
+ for (var i = 0; i < this.length; i++) {
+ items.push(this[i][item]);
+ }
}
- }
- catch(ex){
- return null;
- }
- return items;
+ catch (ex) {
+ return null;
+ }
+ return items;
};
Array.prototype.empty = function () {
- return (this.length == 0);
+ return (this.length == 0);
};
//String Extensions
-String.prototype.underscore = function (){
- return this.replace(/\s/g, "_");
+String.prototype.underscore = function () {
+ return this.replace(/\s/g, "_");
};
-String.prototype.downcase = function (){
- return this.toLowerCase();
+String.prototype.downcase = function () {
+ return this.toLowerCase();
};