Koha/koha-tmpl/intranet-tmpl/prog/js/acq.js
Owen Leonard 5e1bcc4aa7 Bug 16242 - Move staff client JavaScript out of language directory
This patch moves the JavaScript files in prog/en/js to prog/js.
JavaScript files do not need to be in the directory which is processed
by the translator.

To test, apply the patch and visit various pages in the staff client to
confirm that JavaScript files are still loading correctly.

Revised: I intended for this to be built on top of Bug 15883 as well as
Bug 16242. Now it is.

Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com>
On top of 15883 and 16241
All seems to work, js files pulled from new dir.
No errors

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
2016-04-29 14:32:42 +00:00

376 lines
12 KiB
JavaScript

//=======================================================================
//input validation:
// acqui/uncertainprice.tmpl uses this
function uncheckbox(form, field) {
var price = new Number(form.elements['price' + field].value);
var tmpprice = "";
var errmsg = MSG_INVALIDPRICE;
if (isNaN(price)) {
alert(errmsg);
for(var i=0; i<form.elements['price' + field].value.length; ++i) {
price = new Number(form.elements['price' + field].value[i]);
if(! isNaN(price) || form.elements['price' + field].value[i] == ".") {
tmpprice += form.elements['price' + field].value[i];
}
}
form.elements['price' + field].value = tmpprice;
return false;
}
form.elements['uncertainprice' + field].checked = false;
return true;
}
// returns false if value is empty
function isNotNull(f,noalert) {
if (f.value.length ==0) {
return false;
}
return true;
}
function isNull(f,noalert) {
if (f.value.length > 0) {
return false;
}
return true;
}
//Function returns false if v is not a number (if maybenull is 0, it also returns an error if the number is 0)
function isNum(v,maybenull) {
var n = new Number(v.value);
if (isNaN(n)) {
return false;
}
if (maybenull==0 && v.value=='') {
return false;
}
return true;
}
//a logging function (a bit buggy, might open millions of log pages when initializing, but works fine after...
function log(message) {
if (!log.window_ || log.window_.closed) {
var win = window.open("", null, "width=400,height=200," +
"scrollbars=yes,resizable=yes,status=no," +
"location=no,menubar=no,toolbar=no");
if (!win) return;
var doc = win.document;
doc.write("<html><head><title>Debug Log</title></head>" +
"<body></body></html>");
doc.close();
log.window_ = win;
}
var logLine = log.window_.document.createElement("div");
logLine.appendChild(log.window_.document.createTextNode(message));
log.window_.document.body.appendChild(logLine);
}
//=======================================================================
function getElementsByClass( searchClass, domNode, tagName) {
if (domNode == null) domNode = document;
if (tagName == null) tagName = '*';
var el = new Array();
var tags = domNode.getElementsByTagName(tagName);
var tcl = " "+searchClass+" ";
for(i=0,j=0; i<tags.length; i++) {
var test = " " + tags[i].className + " ";
if (test.indexOf(tcl) != -1)
el[j++] = tags[i];
}
return el;
}
function calcTotalRow(cell) {
var string = cell.name;
var pos = string.indexOf(",", 0);
var bud_id = string.substring(0, pos);
var val1 = cell.value;
var remainingTotal = document.getElementById("budget_est_"+bud_id);
var remainingNew =0;
var budgetTotal = document.getElementById("budget_tot_"+bud_id ).textContent;
var arr = getElementsByClass(cell.className);
budgetTotal = budgetTotal.replace(/\,/, "");
//percent strip and convert
if ( val1.match(/\%/) ) {
val1 = val1.replace(/\%/, "");
cell.value = (val1 / 100) * Math.abs(budgetTotal ) ;
}
for ( var i=0, len=arr.length; i<len; ++i ){
remainingNew += Math.abs(arr[i].value);
}
var cc = new Number(cell.value);
cell.value = cc.toFixed(2); // TIDYME...
remainingNew = Math.abs( budgetTotal ) - remainingNew ;
if ( remainingNew == 0) {
remainingTotal.style.color = 'black';
}
else if ( remainingNew > 0 ) {
remainingTotal.style.color = 'green';
} else { // if its negative, make it red..
remainingTotal.style.color = 'red';
}
remainingTotal.textContent = remainingNew.toFixed(2) ;
}
function autoFillRow(bud_id) {
var remainingTotal = document.getElementById("budget_est_"+bud_id);
var remainingNew = new Number;
var budgetTotal = document.getElementById("budget_tot_"+bud_id ).textContent;
var arr = getElementsByClass("plan_entry_" + bud_id);
budgetTotal = budgetTotal.replace(/\,/, "");
var qty = new Number;
// get the totals
var novalueArr = new Array();
for ( var i=0, len=arr.length; i<len; ++i ) {
remainingNew += Math.abs (arr[i].value );
if ( arr[i].value == 0 ) {
novalueArr[qty] = arr[i];
qty += 1;
}
}
remainingNew = Math.abs( budgetTotal) - remainingNew ;
var newCell = new Number (remainingNew / qty);
var rest = new Number (remainingNew - (newCell.toFixed(2) * (novalueArr.length - 1)));
for (var i = 0; i<novalueArr.length; ++i) {
if (i == novalueArr.length - 1) {
novalueArr[i].value = rest.toFixed(2);
}else {
novalueArr[i].value = newCell.toFixed(2);
}
}
remainingTotal.textContent = '0.00' ;
remainingTotal.style.color = 'black';
}
function messenger(X,Y,etc){ // FIXME: unused?
win=window.open("","mess","height="+X+",width="+Y+",screenX=150,screenY=0");
win.focus();
win.document.close();
win.document.write("<body link='#333333' bgcolor='#ffffff' text='#000000'><font size='2'><p><br />");
win.document.write(etc);
win.document.write("<center><form><input type=button onclick='self.close()' value='Close'></form></center>");
win.document.write("</font></body></html>");
}
//=======================================================================
// NEXT BLOCK IS USED BY NEWORDERBEMPTY
function updateCosts(){
var quantity = new Number($("#quantity").val());
var discount = new Number($("#discount").val());
var listprice = new Number($("#listprice").val());
var currcode = new String($("#currency").val());
var exchangerate = new Number($("#currency_rate_"+currcode).val());
var gst_on=false;
var rrp = new Number(listprice*exchangerate);
var ecost = rrp;
if ( 100-discount != 100 ) { //Prevent rounding issues if no discount
ecost = new Number(Math.floor(rrp * (100 - discount )) / 100);
}
var total = new Number( ecost * quantity);
$("#rrp").val(rrp.toFixed(2));
$("#ecost").val(ecost.toFixed(2));
$("#total").val(total.toFixed(2));
$("listprice").val(listprice.toFixed(2));
return true;
}
// Calculates total amount in a suggestion
function calcNewsuggTotal(){
//collect values
var quantity = Number(document.getElementById('quantity').value);
var currcode = String(document.getElementById('currency').value);
var price = Number(document.getElementById('price').value);
var exchangerate = Number(document.getElementById('currency_rate_'+currcode).value);
var total = Number(quantity*price*exchangerate);
document.getElementById('total').value = total.toFixed(2);
document.getElementById('price').value = price.toFixed(2);
return true;
}
function getAuthValueDropbox( name, cat, destination, selected ) {
if ( typeof(selected) == 'undefined' ) {
selected = "";
}
if (cat == null || cat == "") {
$(destination).replaceWith(' <input type="text" name="' + name + '" value="' + selected + '" />' );
return;
}
$.ajax({
url: "/cgi-bin/koha/acqui/ajax-getauthvaluedropbox.pl",
data: {
name: name,
category: cat,
default: selected
},
async: false,
success: function(data){
if(data === "0"){
$(destination).replaceWith(' <input type="text" name="' + name + '" value="' + selected + '" />' );
}else{
$(destination).replaceWith(data);
}
}
});
}
//USED BY NEWORDEREMPTY.PL
function totalExceedsBudget(budgetId, total) {
var xmlhttp = null;
xmlhttp = new XMLHttpRequest();
if ( typeof xmlhttp.overrideMimeType != 'undefined') {
xmlhttp.overrideMimeType('text/xml');
}
var url = '../acqui/check_budget_total.pl?budget_id=' + budgetId + "&total=" + total;
xmlhttp.open('GET', url, false);
xmlhttp.send(null);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
actTotal = eval ( xmlhttp.responseText );
if ( Math.abs(actTotal) < Math.abs(total) ) {
// if budget is to low :(
return true ;
} else {
return false;
}
}
}
}
//USED BY AQBUDGETS.TMPL
function budgetExceedsParent(budgetTotal, budgetId, newBudgetParent, periodID) {
var xmlhttp = null;
xmlhttp = new XMLHttpRequest();
if ( typeof xmlhttp.overrideMimeType != 'undefined') {
xmlhttp.overrideMimeType('text/xml');
}
// make the call... yawn
// var url = '../admin/check_parent_total.pl?budget_id=' + budgetId + '&parent_id=' + newBudgetParent + "&total=" + budgetTotal + "&period_id="+ periodID ;
var url = '../admin/check_parent_total.pl?total=' + budgetTotal + "&period_id="+ periodID ;
if (budgetId ) { url += '&budget_id=' + budgetId };
if ( newBudgetParent ) { url += '&parent_id=' + newBudgetParent};
xmlhttp.open('GET', url, false);
xmlhttp.send(null);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
// stupid JS...
} else {
// wait for the call to complete
}
};
var result = eval ( xmlhttp.responseText );
if (result == '1') {
return MSG_BUDGET_PARENT_ALLOCATION;
} else if (result == '2') {
return MSG_BUDGET_PERIOD_ALLOCATION;
} else {
return false;
}
}
//USED BY AQBUDGETS.TMPL
function checkBudgetParent(budgetId, newBudgetParent) {
var xmlhttp = null;
xmlhttp = new XMLHttpRequest();
if ( typeof xmlhttp.overrideMimeType != 'undefined') {
xmlhttp.overrideMimeType('text/xml');
}
var url = '../admin/check_budget_parent.pl?budget_id=' + budgetId + '&new_parent=' + newBudgetParent;
xmlhttp.open('GET', url, false);
xmlhttp.send(null);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
// do something with the results
} else {
// wait for the call to complete
}
};
var result = eval ( xmlhttp.responseText );
if (result == '1') {
return MSG_PARENT_BENEATH_BUDGET;
// } else if (result == '2') {
// return "- New budget-parent has insufficent funds\n";
// } else {
// return false;
}
}
function hideColumn(num) {
$("#hideall,#showall").prop("checked", false).parent().removeClass("selected");
$("#"+num).parent().removeClass("selected");
var hide = Number(num.replace("col","")) + 2;
// hide header and cells matching the index
$("#plan td:nth-child("+hide+"),#plan th:nth-child("+hide+")").toggle();
}
function showColumn(num){
$("#hideall").prop("checked", false).parent().removeClass("selected");
$("#"+num).parent().addClass("selected");
// set the index of the table column to hide
show = Number(num.replace("col","")) + 2;
// hide header and cells matching the index
$("#plan td:nth-child("+show+"),#plan th:nth-child("+show+")").toggle();
}
function showAllColumns(){
$("#selections").checkCheckboxes();
$("#selections span").addClass("selected");
$("#plan td:nth-child(2),#plan tr th:nth-child(2)").nextAll().show();
$("#hideall").prop("checked", false).parent().removeClass("selected");
}
function hideAllColumns(){
var allCols = $("#plan th").length;
$("#selections").unCheckCheckboxes();
$("#selections span").removeClass("selected");
$("#plan td:nth-child(2),#plan th:nth-child(2)").nextUntil("th:nth-child("+(allCols-1)+"),td:nth-child("+(allCols-1)+")").hide(); // hide all but the last two columns
$("#hideall").prop("checked", true).parent().addClass("selected");
}