cleaned up handler

This commit is contained in:
Rushabh Mehta 2012-01-27 17:58:38 +05:30
parent becfd56e07
commit 6b9cf61fcf
8 changed files with 123 additions and 269 deletions

View file

@ -441,10 +441,9 @@ div.time_field select{
.datainputcell { padding: 2px 0px; }
.field_description {
.field_description, .help {
margin: 3px 0px 11px 0px;
color: #888;
font-size: 12px;
font-style: italic;
}

View file

@ -142,10 +142,9 @@ div.time_field select{
.datainputcell { padding: 2px 0px; }
.field_description {
.field_description, .help {
margin: 3px 0px 11px 0px;
color: #888;
font-size: 12px;
font-style: italic;
}

View file

@ -220,47 +220,51 @@ wn.datetime.time_to_hhmm = function(hh,mm,am) {
return hh + ':' + mm;
}
// when
/*
* JavaScript Pretty Date
* Copyright (c) 2011 John Resig (ejohn.org)
* Licensed under the MIT and GPL licenses.
*/
wn.datetime.comment_when = function(dt, only_days) {
if(only_days) {
var cdate = dateutil.str_to_obj(dt.split(' ')[0]);
var diff = (new Date() - cdate) / 1000;
if(diff < 604800) {
var t = Math.floor(diff/86400);
if(t==0) return "Today";
if(t==1) return "Yesterday";
return t + " days ago"
} else {
return cdate.getDate() + " " + month_list[cdate.getMonth()] + " " + cdate.getFullYear();
}
} else {
var cdate = dateutil.str_to_obj(dt);
var diff = (new Date() - cdate) / 1000;
if(diff < 60) {
return "Few moments ago"
} else if(diff < 3600) {
var t = Math.floor(diff/60);
return t + " minute" + (t==1?"":"s") + " ago"
} else if(diff < 86400) {
var t = Math.floor(diff/3600);
return t + " hour" + (t==1?"":"s") + " ago"
} else if(diff < 604800) {
var t = Math.floor(diff/86400);
return t + " day" + (t==1?"":"s") + " ago"
} else {
return cdate.getDate() + " " + month_list[cdate.getMonth()] + " " + cdate.getFullYear();
}
}
// Takes an ISO time and returns a string representing how
// long ago the date represents.
function prettyDate(time){
if(!time) return ''
var date = new Date((time || "").replace(/-/g,"/").replace(/[TZ]/g," ").replace(/\.[0-9]*/, "")),
diff = (((new Date()).getTime() - date.getTime()) / 1000),
day_diff = Math.floor(diff / 86400);
if ( isNaN(day_diff) || day_diff < 0 )
return '';
return day_diff == 0 && (
diff < 60 && "just now" ||
diff < 120 && "1 minute ago" ||
diff < 3600 && Math.floor( diff / 60 ) + " minutes ago" ||
diff < 7200 && "1 hour ago" ||
diff < 86400 && Math.floor( diff / 3600 ) + " hours ago") ||
day_diff == 1 && "Yesterday" ||
day_diff < 7 && day_diff + " days ago" ||
day_diff < 31 && Math.ceil( day_diff / 7 ) + " weeks ago" ||
day_diff < 365 && Math.ceil( day_diff / 30) + " months ago" ||
"more than " + Math.floor( day_diff / 365 ) + " year(s) ago";
}
// If jQuery is included in the page, adds a jQuery plugin to handle it as well
if ( typeof jQuery != "undefined" )
jQuery.fn.prettyDate = function(){
return this.each(function(){
var date = prettyDate(this.title);
if ( date )
jQuery(this).text( date );
});
};
var comment_when = prettyDate;
// globals (deprecate)
var date = dateutil = wn.datetime;
var get_today = wn.datetime.get_today
var comment_when = wn.datetime.comment_when;
var time_to_ampm = wn.datetime.time_to_ampm;
var time_to_hhmm = wn.datetime.time_to_hhmm;
var only_date = wn.datetime.only_date;

View file

@ -33,11 +33,13 @@ function newHttpReq() {
}
// call execute serverside request
function $c(command, args, fn, on_timeout, no_spinner, freeze_msg) {
function $c(command, args, fn, on_timeout, no_spinner, freeze_msg, btn) {
var req=newHttpReq();
ret_fn=function() {
if (checkResponse(req, on_timeout, no_spinner, freeze_msg)) {
if(!no_spinner)hide_loading(); // Loaded
if(btn)$(btn).done_working();
if(!no_spinner)
hide_loading(); // Loaded
var rtxt = req.responseText;
@ -61,6 +63,7 @@ function $c(command, args, fn, on_timeout, no_spinner, freeze_msg) {
if(fn)fn(r, rtxt);
}
}
if(btn) $(btn).set_working();
req.onreadystatechange=ret_fn;
req.open("POST",outUrl,true);
req.setRequestHeader("ENCTYPE", "multipart/form-data");
@ -103,22 +106,37 @@ function validate_session(r,rt) {
}
// For calling an object
function $c_obj(doclist, method, arg, call_back, no_spinner, freeze_msg) {
function $c_obj(doclist, method, arg, call_back, no_spinner, freeze_msg, btn) {
var args = { 'method':method, 'arg': (typeof arg=='string' ? arg : JSON.stringify(arg)) }
if(typeof doclist=='string') args.doctype = doclist;
else args.docs = compress_doclist(doclist)
// single
$c('runserverobj',args, call_back, null, no_spinner, freeze_msg);
$c('runserverobj',args, call_back, null, no_spinner, freeze_msg, btn);
}
// For call a page metho
function $c_page(module, page, method, arg, call_back, no_spinner, freeze_msg) {
function $c_page(module, page, method, arg, call_back, no_spinner, freeze_msg, btn) {
if(arg && !arg.substr) arg = JSON.stringify(arg);
$c(module+'.page.'+page+'.'+page+'.'+method,{'arg':arg}, call_back, null, no_spinner, freeze_msg);
$c(module+'.page.'+page+'.'+page+'.'+method,{'arg':arg},
call_back, null, no_spinner, freeze_msg, btn);
}
// generic server call (call page, object)
wn.call = function(args) {
if(args.module && args.page) {
$c_page(args.module, args.page, args.method, args.args, args.callback,
args.no_spinner, false, args.btn);
} else if(args.docs) {
$c_obj(args.doc, args.method, args.args, args.callback, args.no_spinner,
false, args.btn);
} else {
$c(args.method, args.args, args.callback, args.no_spinner, false, args.btn);
}
}
// For calling an for output as csv
function $c_obj_csv(doclist, method, arg) {
// single
@ -138,12 +156,6 @@ function $c_obj_csv(doclist, method, arg) {
open_url_post(outUrl, args);
}
// For loading a matplotlib Plot
function $c_graph(img, control_dt, method, arg) {
img.src = outUrl + '?' + makeArgString({cmd:'get_graph', dt:control_dt, method:method, arg:arg});
}
function my_eval(co) {
var w = window;
@ -159,93 +171,6 @@ function my_eval(co) {
}
}
// For loading javascript file on demand using AJAX
function $c_js(fn, callback) {
var req=newHttpReq();
ret_fn=function() {
if (checkResponse(req, function() { }, 1, null)) {
if(req.responseText.substr(0,9)=='Not Found') {
alert(req.responseText);
return;
}
hide_loading();
my_eval(req.responseText);
callback();
}
}
req.onreadystatechange=ret_fn;
req.open("POST",'cgi-bin/getjsfile.cgi',true);
req.setRequestHeader("ENCTYPE", "multipart/form-data");
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
req.send(makeArgString({filename:fn}));
set_loading();
}
var load_queue = {};
var currently_loading = {};
var widgets = {};
var single_widgets = {};
// load a widget on demand
// --------------------------------------------------------------
function new_widget(widget, callback, single_type) {
var namespace = '';
var widget_name = widget;
if(widget.search(/\./) != -1) {
namespace = widget.split('.')[0];
widget_name = widget.split('.')[1];
}
var widget_loaded = function() {
currently_loading[widget] = 0;
for(var i in load_queue[widget]) {
// callback
load_queue[widget][i](create_widget());
}
// clear the queue
load_queue[widget] = [];
}
var create_widget = function() {
if(single_type && single_widgets[widget_name])
return null;
if(namespace)
var w = new window[namespace][widget_name]();
else
var w = new window[widget_name]();
// add to singles
if(single_type)
single_widgets[widget_name] = w;
return w;
}
if(namespace ? window[namespace][widget_name] : window[widget_name]) {
// loaded?
callback(create_widget());
} else {
// loading in process
if(!load_queue[widget]) load_queue[widget] = [];
load_queue[widget].push(callback);
// load only if not currently loading
if(!currently_loading[widget]) {
$c_js(widget_files[widget], widget_loaded);
}
// flag it as loading
currently_loading[widget] = 1;
}
}
function makeArgString(dict) {
var varList = [];
@ -273,100 +198,4 @@ function open_url_post(URL, PARAMS, new_window) {
document.body.appendChild(temp);
temp.submit();
return temp;
}
// Resume sessions
var resume_dialog = null;
function resume_session() {
if(!resume_dialog) {
var d = new Dialog(400,200,'Session Expired');
d.make_body([
['Password','password','Re-enter your password to resume the session'], ['Button','Go']]);
// check password
d.widgets['Go'].onclick = function() {
resume_dialog.widgets['Go'].set_working();
var callback = function(r, rt) {
resume_dialog.widgets['Go'].done_working();
if(r.message == 'Logged In') {
// okay
resume_dialog.allow_close=1;
resume_dialog.hide();
setTimeout('resume_dialog.allow_close=0',100);
} else {
// wrong password
msgprint('Wrong Password, try again');
resume_dialog.wrong_count++;
if(resume_dialog.wrong_count > 2) logout();
}
}
$c('resume_session',{pwd:resume_dialog.widgets['password'].value},callback)
}
d.onhide = function() {
if(!resume_dialog.allow_close) logout();
}
resume_dialog = d;
}
resume_dialog.wrong_count = 0;
resume_dialog.show();
}
/**
* require is used for on demand loading of JavaScript
*
* require r1 // 2008.02.05 // jQuery 1.2.2
*
* // basic usage (just like .accordion)
* $.require("comp1.js");
*
* @param jsFiles string array or string holding the js file names to load
* @param params object holding parameter like browserType, callback, cache
* @return The jQuery object
* @author Manish Shanker
*/
(function($){
$.require = function(jsFiles, params) {
var params = params || {};
var bType = params.browserType===false?false:true;
if (!bType){
return $;
}
var cBack = params.callBack || function(){};
var eCache = params.cache===false?false:true;
if (!$.require.loadedLib) $.require.loadedLib = {};
if ( !$.scriptPath ) {
var path = $('script').attr('src');
$.scriptPath = path.replace(/\w+\.js$/, '');
}
if (typeof jsFiles === "string") {
jsFiles = new Array(jsFiles);
}
for (var n=0; n< jsFiles.length; n++) {
if (!$.require.loadedLib[jsFiles[n]]) {
$.ajax({
type: "GET",
url: $.scriptPath + jsFiles[n],
success: cBack,
dataType: "script",
cache: eCache,
async: false
});
$.require.loadedLib[jsFiles[n]] = true;
}
}
//console.dir($.require.loadedLib);
return $;
};
})(jQuery);
}

View file

@ -144,7 +144,7 @@ function historyChange(newLocation) {
if(t[0]=='Form') {
_history_current = newLocation;
if(docname.substr(0, 3)=='New') {
if(docname.substr(0, 3)=='New' && !(locals[t[1]] && locals[t[1]][docname])) {
newdoc(t[1]);
} else {
loaddoc(t[1], docname);

View file

@ -117,9 +117,13 @@ if(t.length!=2){show_alert('[set_time] Incorect time format');return;}
if(cint(t[0])==0)var ret=['12',t[1],'AM'];else if(cint(t[0])<12)var ret=[cint(t[0])+'',t[1],'AM'];else if(cint(t[0])==12)var ret=['12',t[1],'PM'];else var ret=[(cint(t[0])-12)+'',t[1],'PM'];return ret;}
wn.datetime.time_to_hhmm=function(hh,mm,am){if(am=='AM'&&hh=='12'){hh='00';}else if(am=='PM'&&hh!='12'){hh=cint(hh)+12;}
return hh+':'+mm;}
wn.datetime.comment_when=function(dt,only_days){if(only_days){var cdate=dateutil.str_to_obj(dt.split(' ')[0]);var diff=(new Date()-cdate)/1000;if(diff<604800){var t=Math.floor(diff/86400);if(t==0)return"Today";if(t==1)return"Yesterday";return t+" days ago"}else{return cdate.getDate()+" "+month_list[cdate.getMonth()]+" "+cdate.getFullYear();}}else{var cdate=dateutil.str_to_obj(dt);var diff=(new Date()-cdate)/1000;if(diff<60){return"Few moments ago"}else if(diff<3600){var t=Math.floor(diff/60);return t+" minute"+(t==1?"":"s")+" ago"}else if(diff<86400){var t=Math.floor(diff/3600);return t+" hour"+(t==1?"":"s")+" ago"}else if(diff<604800){var t=Math.floor(diff/86400);return t+" day"+(t==1?"":"s")+" ago"}else{return cdate.getDate()+" "+month_list[cdate.getMonth()]+" "+cdate.getFullYear();}}}
var date=dateutil=wn.datetime;var get_today=wn.datetime.get_today
var comment_when=wn.datetime.comment_when;var time_to_ampm=wn.datetime.time_to_ampm;var time_to_hhmm=wn.datetime.time_to_hhmm;var only_date=wn.datetime.only_date;
function prettyDate(time){if(!time)return''
var date=new Date((time||"").replace(/-/g,"/").replace(/[TZ]/g," ").replace(/\.[0-9]*/,"")),diff=(((new Date()).getTime()-date.getTime())/1000),day_diff=Math.floor(diff/86400);if(isNaN(day_diff)||day_diff<0)
return'';return day_diff==0&&(diff<60&&"just now"||diff<120&&"1 minute ago"||diff<3600&&Math.floor(diff/60)+" minutes ago"||diff<7200&&"1 hour ago"||diff<86400&&Math.floor(diff/3600)+" hours ago")||day_diff==1&&"Yesterday"||day_diff<7&&day_diff+" days ago"||day_diff<31&&Math.ceil(day_diff/7)+" weeks ago"||day_diff<365&&Math.ceil(day_diff/30)+" months ago"||"more than "+Math.floor(day_diff/365)+" year(s) ago";}
if(typeof jQuery!="undefined")
jQuery.fn.prettyDate=function(){return this.each(function(){var date=prettyDate(this.title);if(date)
jQuery(this).text(date);});};var comment_when=prettyDate;var date=dateutil=wn.datetime;var get_today=wn.datetime.get_today
var time_to_ampm=wn.datetime.time_to_ampm;var time_to_hhmm=wn.datetime.time_to_hhmm;var only_date=wn.datetime.only_date;
/*
* lib/js/legacy/utils/dom.js
*/
@ -240,54 +244,32 @@ unfreeze();return false;}}
var pending_req=0;function newHttpReq(){if(!isIE)
var r=new XMLHttpRequest();else if(window.ActiveXObject)
var r=new ActiveXObject("Microsoft.XMLHTTP");return r;}
function $c(command,args,fn,on_timeout,no_spinner,freeze_msg){var req=newHttpReq();ret_fn=function(){if(checkResponse(req,on_timeout,no_spinner,freeze_msg)){if(!no_spinner)hide_loading();var rtxt=req.responseText;try{var r=JSON.parse(rtxt);}catch(e){alert('Handler Exception:'+rtxt);return;}
function $c(command,args,fn,on_timeout,no_spinner,freeze_msg,btn){var req=newHttpReq();ret_fn=function(){if(checkResponse(req,on_timeout,no_spinner,freeze_msg)){if(btn)$(btn).done_working();if(!no_spinner)
hide_loading();var rtxt=req.responseText;try{var r=JSON.parse(rtxt);}catch(e){alert('Handler Exception:'+rtxt);return;}
if(freeze_msg)unfreeze();if(!validate_session(r,rtxt))return;if(r.exc){errprint(r.exc);console.log(r.exc);};if(r.server_messages){msgprint(r.server_messages);};if(r.docs){LocalDB.sync(r.docs);}
saveAllowed=true;if(fn)fn(r,rtxt);}}
req.onreadystatechange=ret_fn;req.open("POST",outUrl,true);req.setRequestHeader("ENCTYPE","multipart/form-data");req.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");args['cmd']=command;req.send(makeArgString(args));if(!no_spinner)set_loading();if(freeze_msg)freeze(freeze_msg,1);}
if(btn)$(btn).set_working();req.onreadystatechange=ret_fn;req.open("POST",outUrl,true);req.setRequestHeader("ENCTYPE","multipart/form-data");req.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");args['cmd']=command;req.send(makeArgString(args));if(!no_spinner)set_loading();if(freeze_msg)freeze(freeze_msg,1);}
function validate_session(r,rt){if(r.message=='Logged In'){start_sid=get_cookie('sid');return true;}
if(start_sid&&start_sid!=get_cookie('sid')&&user&&user!='Guest'){page_body.set_session_changed();return;}
if(r.exc&&r.session_status=='Session Expired'){resume_session();return;}
if(r.exc&&r.session_status=='Logged Out'){msgprint('You have been logged out');setTimeout('redirect_to_login()',3000);return;}
if(r.exc&&r.exc_type&&r.exc_type=='PermissionError'){loadpage('_home');}
return true;}
function $c_obj(doclist,method,arg,call_back,no_spinner,freeze_msg){var args={'method':method,'arg':(typeof arg=='string'?arg:JSON.stringify(arg))}
function $c_obj(doclist,method,arg,call_back,no_spinner,freeze_msg,btn){var args={'method':method,'arg':(typeof arg=='string'?arg:JSON.stringify(arg))}
if(typeof doclist=='string')args.doctype=doclist;else args.docs=compress_doclist(doclist)
$c('runserverobj',args,call_back,null,no_spinner,freeze_msg);}
function $c_page(module,page,method,arg,call_back,no_spinner,freeze_msg){if(arg&&!arg.substr)arg=JSON.stringify(arg);$c(module+'.page.'+page+'.'+page+'.'+method,{'arg':arg},call_back,null,no_spinner,freeze_msg);}
$c('runserverobj',args,call_back,null,no_spinner,freeze_msg,btn);}
function $c_page(module,page,method,arg,call_back,no_spinner,freeze_msg,btn){if(arg&&!arg.substr)arg=JSON.stringify(arg);$c(module+'.page.'+page+'.'+page+'.'+method,{'arg':arg},call_back,null,no_spinner,freeze_msg,btn);}
wn.call=function(args){if(args.module&&args.page){$c_page(args.module,args.page,args.method,args.args,args.callback,args.no_spinner,false,args.btn);}else if(args.docs){$c_obj(args.doc,args.method,args.args,args.callback,args.no_spinner,false,args.btn);}else{$c(args.method,args.args,args.callback,args.no_spinner,false,args.btn);}}
function $c_obj_csv(doclist,method,arg){var args={}
args.cmd='runserverobj';args.as_csv=1;args.method=method;args.arg=arg;if(doclist.substr)
args.doctype=doclist;else
args.docs=compress_doclist(doclist);open_url_post(outUrl,args);}
function $c_graph(img,control_dt,method,arg){img.src=outUrl+'?'+makeArgString({cmd:'get_graph',dt:control_dt,method:method,arg:arg});}
function my_eval(co){var w=window;if(!w.execScript){if(/Gecko/.test(navigator.userAgent)){eval(co,w);}else{eval.call(w,co);}}else{w.execScript(co);}}
function $c_js(fn,callback){var req=newHttpReq();ret_fn=function(){if(checkResponse(req,function(){},1,null)){if(req.responseText.substr(0,9)=='Not Found'){alert(req.responseText);return;}
hide_loading();my_eval(req.responseText);callback();}}
req.onreadystatechange=ret_fn;req.open("POST",'cgi-bin/getjsfile.cgi',true);req.setRequestHeader("ENCTYPE","multipart/form-data");req.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");req.send(makeArgString({filename:fn}));set_loading();}
var load_queue={};var currently_loading={};var widgets={};var single_widgets={};function new_widget(widget,callback,single_type){var namespace='';var widget_name=widget;if(widget.search(/\./)!=-1){namespace=widget.split('.')[0];widget_name=widget.split('.')[1];}
var widget_loaded=function(){currently_loading[widget]=0;for(var i in load_queue[widget]){load_queue[widget][i](create_widget());}
load_queue[widget]=[];}
var create_widget=function(){if(single_type&&single_widgets[widget_name])
return null;if(namespace)
var w=new window[namespace][widget_name]();else
var w=new window[widget_name]();if(single_type)
single_widgets[widget_name]=w;return w;}
if(namespace?window[namespace][widget_name]:window[widget_name]){callback(create_widget());}else{if(!load_queue[widget])load_queue[widget]=[];load_queue[widget].push(callback);if(!currently_loading[widget]){$c_js(widget_files[widget],widget_loaded);}
currently_loading[widget]=1;}}
function makeArgString(dict){var varList=[];for(key in dict){varList[varList.length]=key+'='+encodeURIComponent(dict[key]);}
return varList.join('&');}
function open_url_post(URL,PARAMS,new_window){var temp=document.createElement("form");temp.action=URL;temp.method="POST";temp.style.display="none";if(new_window){temp.target='_blank';}
for(var x in PARAMS){var opt=document.createElement("textarea");opt.name=x;opt.value=PARAMS[x];temp.appendChild(opt);}
document.body.appendChild(temp);temp.submit();return temp;}
var resume_dialog=null;function resume_session(){if(!resume_dialog){var d=new Dialog(400,200,'Session Expired');d.make_body([['Password','password','Re-enter your password to resume the session'],['Button','Go']]);d.widgets['Go'].onclick=function(){resume_dialog.widgets['Go'].set_working();var callback=function(r,rt){resume_dialog.widgets['Go'].done_working();if(r.message=='Logged In'){resume_dialog.allow_close=1;resume_dialog.hide();setTimeout('resume_dialog.allow_close=0',100);}else{msgprint('Wrong Password, try again');resume_dialog.wrong_count++;if(resume_dialog.wrong_count>2)logout();}}
$c('resume_session',{pwd:resume_dialog.widgets['password'].value},callback)}
d.onhide=function(){if(!resume_dialog.allow_close)logout();}
resume_dialog=d;}
resume_dialog.wrong_count=0;resume_dialog.show();}
(function($){$.require=function(jsFiles,params){var params=params||{};var bType=params.browserType===false?false:true;if(!bType){return $;}
var cBack=params.callBack||function(){};var eCache=params.cache===false?false:true;if(!$.require.loadedLib)$.require.loadedLib={};if(!$.scriptPath){var path=$('script').attr('src');$.scriptPath=path.replace(/\w+\.js$/,'');}
if(typeof jsFiles==="string"){jsFiles=new Array(jsFiles);}
for(var n=0;n<jsFiles.length;n++){if(!$.require.loadedLib[jsFiles[n]]){$.ajax({type:"GET",url:$.scriptPath+jsFiles[n],success:cBack,dataType:"script",cache:eCache,async:false});$.require.loadedLib[jsFiles[n]]=true;}}
return $;};})(jQuery);
/*
* lib/js/legacy/utils/msgprint.js
*/
@ -702,7 +684,7 @@ function historyChange(newLocation){var t=nav_obj.get_page(newLocation)
for(var i=0;i<t.length;i++)
t[i]=decodeURIComponent(t[i]);if(nav_obj.ol.length){var c=nav_obj.ol[nav_obj.ol.length-1];if(t.length==2){if(c[0]==t[0]&&c[1]==t[1])return;}else{if(c[0]==t[0]&&c[1]==t[1]&&c[2]==t[2])return;}}
if(t[2])
var docname=history_get_name(t);if(t[0]=='Form'){_history_current=newLocation;if(docname.substr(0,3)=='New'){newdoc(t[1]);}else{loaddoc(t[1],docname);}}else if(t[0]=='Report'){_history_current=newLocation;loadreport(t[1],docname);}else if(t[0]=='Page'){_history_current=newLocation;loadpage(t[1]);}else if(t[0]=='Application'){_history_current=newLocation;loadapp(t[1]);}else if(t[0]=='DocBrowser'||t[0]=='List'){_history_current=newLocation;loaddocbrowser(t[1]);}};$(window).bind('hashchange',function(){historyChange(location.hash);});
var docname=history_get_name(t);if(t[0]=='Form'){_history_current=newLocation;if(docname.substr(0,3)=='New'&&!(locals[t[1]]&&locals[t[1]][docname])){newdoc(t[1]);}else{loaddoc(t[1],docname);}}else if(t[0]=='Report'){_history_current=newLocation;loadreport(t[1],docname);}else if(t[0]=='Page'){_history_current=newLocation;loadpage(t[1]);}else if(t[0]=='Application'){_history_current=newLocation;loadapp(t[1]);}else if(t[0]=='DocBrowser'||t[0]=='List'){_history_current=newLocation;loaddocbrowser(t[1]);}};$(window).bind('hashchange',function(){historyChange(location.hash);});
/*
* lib/js/legacy/webpage/search.js
*/

39
js/lib/prettydate.js Normal file
View file

@ -0,0 +1,39 @@
/*
* JavaScript Pretty Date
* Copyright (c) 2011 John Resig (ejohn.org)
* Licensed under the MIT and GPL licenses.
*/
// Takes an ISO time and returns a string representing how
// long ago the date represents.
function prettyDate(time){
if(!time) return ''
var date = new Date((time || "").replace(/-/g,"/").replace(/[TZ]/g," ").replace(/\.[0-9]*/, "")),
diff = (((new Date()).getTime() - date.getTime()) / 1000),
day_diff = Math.floor(diff / 86400);
if ( isNaN(day_diff) || day_diff < 0 )
return '';
return day_diff == 0 && (
diff < 60 && "just now" ||
diff < 120 && "1 minute ago" ||
diff < 3600 && Math.floor( diff / 60 ) + " minutes ago" ||
diff < 7200 && "1 hour ago" ||
diff < 86400 && Math.floor( diff / 3600 ) + " hours ago") ||
day_diff == 1 && "Yesterday" ||
day_diff < 7 && day_diff + " days ago" ||
day_diff < 31 && Math.ceil( day_diff / 7 ) + " weeks ago" ||
day_diff < 365 && Math.ceil( day_diff / 30) + " months ago" ||
"more than " + Math.floor( day_diff / 365 ) + " year(s) ago";
}
// If jQuery is included in the page, adds a jQuery plugin to handle it as well
if ( typeof jQuery != "undefined" )
jQuery.fn.prettyDate = function(){
return this.each(function(){
var date = prettyDate(this.title);
if ( date )
jQuery(this).text( date );
});
};

View file

@ -118,6 +118,8 @@ class Document:
# ---------------------------------------------------------------------------
def _load_values(self, data, description):
if '__islocal' in self.fields:
del self.fields['__islocal']
for i in range(len(description)):
v = data[i]
self.fields[description[i][0]] = webnotes.conn.convert_to_simple_type(v)