📄 buffalo.js
字号:
}
}
if (jHeight == 1) { // if there is only one line, first line is header(every td indicate by a jtext property)
var headerTR = tBody.rows[0];
for (var i = 0; i < headerTR.cells.length ; i++ ) {
dataHeader[dataHeader.length] = headerTR.cells[i].getAttribute("jtext");
}
for (var i = 0; i < value.length; i++) {
var tr = tBody.insertRow(tBody.rows.length);
var data = value[i];
for (var j = 0; j < dataHeader.length; j++ ) {
var td = tr.insertCell(tr.cells.length);
td.innerHTML = data[dataHeader[j]];
}
}
}
if (jHeight == 2) { // two lines, first line is header, the second is style
var headerTR = tBody.rows[0];
for (var i = 0; i < headerTR.cells.length ; i++ ) {
dataHeader[dataHeader.length] = headerTR.cells[i].getAttribute("jtext");
}
for (var i = 0; i < value.length; i++) {
var tr;
if (i == 0) { // if the first row
tr = elem.rows[1];
} else { // else copy the first row
tr = elem.rows[1].cloneNode(true);
}
if (i > 0) {
tBody.appendChild(tr);
}
var data = value[i];
for (var j = 0; j < tr.cells.length; j++ ) {
var td = tr.cells[j];
td.innerHTML = data[dataHeader[j]];
}
}
}
if (jHeight >= 3) { // more than 3 rows, first header, second and third is odd/even style, other lines ommited.
var headerTR = tBody.rows[0];
for (var i = 0; i < headerTR.cells.length ; i++ ) {
dataHeader[dataHeader.length] = headerTR.cells[i].getAttribute("jtext");
}
for (var i = 0; i < value.length; i++) {
var tr;
if (i == 0) { // 1st row
tr = tBody.rows[1];
} else if (i == 1) { // 2nd row
tr = tBody.rows[2];
} else if ( i % 2 == 0) { // get the 1st row
tr = tBody.rows[1].cloneNode(true);
} else if (i % 2 == 1) { // the 2nd row
tr = tBody.rows[2].cloneNode(true);
}
if (i > 1) {
tBody.appendChild(tr);
}
var data = value[i];
for (var j = 0; j < tr.cells.length; j++ ) {
var td = tr.cells[j];
td.innerHTML = data[dataHeader[j]];
}
}
}
},
checkTrue: function(value) {
switch (typeof(value)) {
case 'boolean': ret = value; break;
case 'string': ret = (value == true || value == "1" || value == "true" || value == "yes"); break;
case 'number': ret = (parseInt(value) == 1); break;
default: ret = false;
}
return ret;
}
}
Buffalo.bind = Buffalo.Bind.bind; /*capable with the old version, deprecated*/
Buffalo.View = Class.create();
Buffalo.View.LAST_VIEWNAME = null;
Buffalo.View.CURRENT_VIEW = null;
Buffalo.View.HOME_VIEW = null;
Buffalo.View.HISTORY_IFRAME_ID = "buffalo-view-history-iframe";
Buffalo.View.iframeLoaded = function(loc) {
var url = loc.href;
var idx = url.indexOf("?");
var viewName = "";
if (idx > -1) {
viewName = url.substring(idx+1);
}
if (viewName == "") {
viewName = Buffalo.View.HOME_VIEW;
}
if (Buffalo.View.CURRENT_VIEW != null) {
Buffalo.View.CURRENT_VIEW.doSwitchPart(viewName);
}
}
Buffalo.View.prototype = {
initialize:function(buffaloObj) {
this.buffalo = buffaloObj;
},
switchPart: function(partId, viewName, addToHistory) {
this.partId = partId;
this.viewName = viewName;
if (typeof(addToHistory) == "undefined" || addToHistory == true) {
this.addToHistory = true;
} else {
this.addToHistory = false;
}
if (Buffalo.View.LAST_VIEWNAME == null) {
/* the first visit view is home view */
Buffalo.View.HOME_VIEW = viewName;
/* The first view, don't add to history */
this.doSwitchPart(viewName);
Buffalo.View.LAST_VIEWNAME = viewName;
return;
}
Buffalo.View.CURRENT_VIEW = this;
if (this.addToHistory) {
if ($(Buffalo.View.HISTORY_IFRAME_ID)) {
var iframesrc=$(Buffalo.View.HISTORY_IFRAME_ID).src;
var newUrl = iframesrc;
var idx = iframesrc.indexOf("?");
if (idx > -1) {
newUrl = iframesrc.substr(0,idx);
}
newUrl += "?" + viewName;
$(Buffalo.View.HISTORY_IFRAME_ID).src = newUrl;
} else {
var msg = "It seems that you havent add the buffalo-blank.html as an Iframe for browser history.";
msg += "\nSo this view cannot add to browser history.";
msg += "\n\nTo prevent this dialog, use buffalo.switchPart(partId, viewName, false) or ";
msg += "add the buffalo-blank.html to your main page with id 'buffalo-view-history-iframe'.";
alert(msg);
}
}
this.doSwitchPart(viewName);
Buffalo.View.LAST_VIEWNAME = viewName;
},
doSwitchPart: function(viewName) {
if (Buffalo.View.LAST_VIEWNAME == viewName) {
return ;
}
this.transport = XmlHttp.create();
var nonCachedViewName = viewName;
try {
/*Fix for the IE cache*/
if (/MSIE/.test(navigator.userAgent)) {
var bfViewHackKey = "_bfviewhackkey_=" + (new Date()).getTime();
if (viewName.indexOf('?') > -1) {
nonCachedViewName += "&" + bfViewHackKey;
} else {
nonCachedViewName += "?" + bfViewHackKey;
}
}
this.transport.open("GET", nonCachedViewName, this.buffalo.async);/*use get for static page*/
} catch (e) {
var msg = "Buffalo View Error: \n\n Cannot find view with name: " + "[" + viewName + "]";
alert(msg);
}
this.transport.send(null);
if (this.buffalo.async) {
this.transport.onreadystatechange = this._viewHandle.bind(this);
this.buffalo.events["onLoading"](true);
} else {
this._processView();
}
Buffalo.View.LAST_VIEWNAME = viewName;
},
_viewHandle : function(){
this._processView();
},
_processView : function() {
this.buffalo.events["onLoading"](false);
if (this.transport.readyState == 4) {
if (this.transport.status == '200') {
var data = this.transport.responseText;
this._showView(this.partId, this.viewName, data);
} else {
this.buffalo.events["onError"](this.transport);
}
}
},
_showView: function(partId, viewPath, viewData) {
var regexp1 = /<script(.|\n)*?>(.|\n|\r\n)*?<\/script>/ig;
var regexp2 = /<script(.|\n)*?>((.|\n|\r\n)*)?<\/script>/im;
/* draw the html first */
$(partId).innerHTML = viewData.replace(regexp1, "");
var result = viewData.match(regexp1);
if (result) {
for (var i = 0; i < result.length; i++) {
var realScript = result[i].match(regexp2);
this._executeScript(realScript[2], partId);
/* Note: do not try to write more than one <script> in your view.*/
/* break; process only one script element */
}
}
},
_executeScript : function(scriptFrag, partId) {
var scriptContainerId = partId + "_SCRIPT_CONTAINER";
var obj = $(scriptContainerId);
var ss = document.getElementsByTagName("SCRIPT");
if (obj != null) {
document.body.removeChild(obj);
}
var scriptContainer = document.createElement('SCRIPT');
scriptContainer.setAttribute("id", scriptContainerId);
scriptContainer.text = scriptFrag;
document.body.appendChild(scriptContainer);
}
}
Object.extend(Buffalo.prototype, {
switchView: function(viewName, container) {
container = container ? container : "body";
this.switchPart(container, viewName, true);
},
switchPart : function(partId, viewName, addToHistory) {
new Buffalo.View(this).switchPart(partId, viewName, addToHistory);
}
});
Buffalo.Form = {
formToBean : function(form, boClass, ignoreButton) {
var object = {};
if (boClass) { object[Buffalo.BOCLASS] = boClass; } else{
object[Buffalo.BOCLASS] = "java.util.Map";
}
if (typeof(ignoreButton) == "undefined" || ignoreButton == true) {
ignoreButton = true;
} else {
ignoreButton = false;
}
form = $(form);
var elements = form.elements;
for (var i = 0; i < elements.length;i++) {
var element = elements[i];
switch (element.type) {
case "radio" :
if (element.checked) {
object[element.name]=element.value
}
break;
case "checkbox" :
if (!form[element.name].length) {
if (element.checked) object[element.name]=element.value ;
else object[element.name]="";
} else {
if (!object[element.name]) {object[element.name] = new Array()};
if (element.checked) {object[element.name].push(element.value);}
}
break;
case "select-one" :
var value = '', opt, index = element.selectedIndex;
if (index >= 0) {
opt = element.options[index];
value = opt.value;
if (!value && !('value' in opt)) value = opt.text;
}
object[element.name] = value;
break;
case "select-multiple" :
if (!object[element.name]) {object[element.name] = new Array()};
for (var j = 0; j < element.options.length; j++) {
var opt = element.options[j];
if (opt.selected) {
var optValue = opt.value;
if (!optValue && !('value' in opt)) optValue = opt.text;
object[element.name].push(optValue);
}
}
break;
default :
if (ignoreButton) {
if (element.type != "submit" && element.type != "button"
&& element.type != "reset") {
object[element.name] = element.value;
}
} else {
object[element.name] = element.value;
}
break;
}
}
return object;
},
bindForm: function(form, data) {
form = $(form);
for (var i = 0; i < form.elements.length;i++) {
var element = form.elements[i];
if (!data[element.name]) continue;
var val = data[element.name];
switch (element.type) {
case "text": ;
case "hidden": ;
case "password": element.value = val; break;
case "radio" :
case "checkbox" :
if (val instanceof Array) element.checked = (val.indexOf(element.value) > -1);
else element.checked = (element.value ==val);
break;
case "select-one" :
case "select-multiple" :
for (var j = 0; j < element.options.length; j++) {
var option = element.options[j];
if (val instanceof Array) {
option.selected = (val.indexOf(option.value) > -1);
} else {
option.selected = (option.value == val);
}
}
break;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -