Show By Category

.NET Service (1) 1909 (1) ACTV (1) adidas (47) adizero (1) Admiral (9) Airness (3) Albania (3) Algeria (3) America Mineiro (1) Angola (1) Anta (2) Argentina (2) Armenia (1) Atletico Goianiense (1) Atletico Paranaense (1) Austria (2) Authentic fit (1) Auto Generate from Access (1) Avai FC (1) avoid (2) Bahia (1) Beijing Guoan (1) Belgium (4) Benin (1) Birmingham City (1) Bolivia (1) Boot Configuration Data missing (1) Bosnia (1) Botafogo (2) Botafogo SP (1) Botswana (2) Brazil (4) Brazilian brand (15) Bulgaria (2) Burkina Faso (2) Burrda (3) Bypass traverse checking (1) Cambodia (1) Cameroon (4) Ceara (1) CEWP (2) Chapecoense (2) Chile (3) China (9) Chinese Brand (4) Chongqing Lifan Dangdai (1) Club Deportivo Universidad Catolica (1) Club Universitario de Deportes (1) Clube de Remo (1) Colombia (6) Colombian Brand (1) Congo DR (1) Congo Rep (1) Copa America (3) Corinthians (1) Coritiba (1) Costa Rica (2) Cote d'Ivoire (3) Coventry City (1) Croatia (2) Crop IFRAME (1) Cruzeiro (2) Crystal Palace (4) css (3) Cuba (1) Cyprus (1) Czech Republic (2) Deleting large libraries (2) Denmark (2) design fault (2) Diadora (1) Dragao Premium (1) eagles (1) Ecuador (3) Ecuadorian Brand (3) Egypt (1) El Salvador (1) electrical (2) electrical problems (2) electrocuted (2) England (3) Errea (3) Espanyol (1) Ethiopia (1) Euro 16 (10) Excel 2010 (3) External Content Type (1) FBT (3) FC Porto (1) Fenerbahce (1) Figueirense (1) Finland (1) Fiorentina (1) Flamengo (1) Flickering (1) Fluminense (1) football (233) Fortuna Dusseldorf (1) France (2) futfanatics.net (1) Gabon (1) Germany (1) Ghana (2) Gogoalshop (2) Goias (1) Granada CF (1) Grand Sport (2) Greece (2) Green (1) Guangzhou Evergrande (1) Guinea (1) Guinea Bissau (1) Haiti (1) Heilongjiang Lava Spring (1) Honduras (1) Hong Kong (1) Hummel (1) Hungary (1) Iceland (3) Icone Sports (2) IE Developer Tools (1) India (1) Indian Brand (1) Internal Field Names (1) Italy (2) Jako (1) Jamaica (2) Japan (1) Javascript (6) Jersey (126) Jiangsu Suning FC (1) Joma (5) Kanxa (1) Kappa (3) Kelme (4) Kenya (1) kitchen extractor fan (3) Korea (1) Laos (1) Le Coq Sportif (1) leak (2) Legea (1) Levante (1) Li Ning (3) Local Security Policy (1) Login Problem (1) Lotto (4) Lupo (2) Macron (9) Mafro (3) Mali (3) Man Utd (1) Marathon Sports (6) Marseilles (1) masterpage (1) Meizhou Hakka (1) Mexico (5) Modena Volley (1) Montenegro (1) Morocco (3) Myanmar (1) N98 (1) Naija (1) Nakal (1) Namibia (1) Napoli (1) Netherlands (1) New Balance (2) Newcastle United (2) Niger (1) Nigeria (4) Nike (32) Nike Brasil (1) Nike Brazil (1) Nike China (12) Nike South Africa (1) North Macedonia (1) Norway (1) O'Neills (1) Oldham Athletic (1) Olympikus (1) Olympique Lyonnais (1) Page Viewer WebPart (1) Panama (2) Para (1) Paraguay (2) Penalty (1) Peru (6) Picture Manager (1) Poland (2) Ponte Preta (1) Portugal (2) Portuguesa RJ (1) problem (2) Puma (46) retro (1) review (111) Romai (2) Romania (1) RT Sports (1) Russia (4) Saeta (1) Sampaio Correa (1) Santarem (1) Santos (2) Sao Paulo FC (1) Sao Raimundo (1) scam (2) Score Draw (1) Search List with Count Displayed (1) Senegal (3) Serbia (1) Server Hardening (1) SESI Sao Paulo (1) Shandong Luneng (1) Shanghai Shenhua (1) Shanghai SIPG (1) SharePoint (61) SharePoint Connect to SQL (2) SharePoint Designer (3) Shenzhen FC (1) shirt (232) Sierra Leone (1) Singaporean Brand (2) Six5Six (1) Slovakia (2) Slovenia (1) Slow right click (1) Sondico (1) South Africa (1) Spain (3) SPS Services (2) Spurs (1) SQL Server 2008 (1) SSP User Profile behaviour (1) Super Bolla (2) Sweden (2) Switzerland (2) Taubate Funvic (1) Team GB (2) techfit (8) Thai Brand (3) Thailand (2) Togo (1) Topper (4) track top (13) Travels (1) Trinidad and Tobago (1) Tunisia (3) Turkiye (1) tyro (1) UAE (1) UB (3) UB Electric (3) Ucan (1) UE Llagostera (1) Uganda (1) Uhlsport (2) Ukraine (1) Umbro (18) Umbro Brazil (6) Under Armour (3) Upload Center (1) Uruguay (1) Vasco Da Gama (1) Venezuela (1) Vietnam (1) Villa Nova (1) Villarreal (1) Vitoria (1) volleyball (6) Vozao (1) Wales (1) Warrix (1) water (2) WebClient (4) WebDav (5) West Ham (2) Where to get buy Iceland football shirt in Reykjavik (1) Win 8 (2) Windows 10 (1) Windows Scheduled Task (1) wish list (1) Workflow (1) World Cup 14 (9) World Cup 18 (5) Wuhan Zall (1) Xinjiang Tianshan Leopard (1) Xtep (1) Yanbian Funde (1) Yemen (1) Zambia (1) Zhejiang Greentown (2) Zimbabwe (1)

Monday, 5 January 2015

An Issue with JQuery, AJAX Aysnc Calls

I had a bit of a struggle to get this working.  It was from a design perspective pretty easy but because I could not get a JQuery Ajax call to return a variable, after its call, therefore the design had to be adapted.  

Consider something like this.


    $.ajax({

            url: "/myserver/IS/mn/_vti_bin/lists.asmx",
            type: "POST",
            dataType: "xml",
            data: soapEnv,
            complete: processFiles,
            contentType: "text/xml; charset=\"utf-8\""
        });


OK, you can call the function processFiles after the the success completion of the call.  But because my design required calling this while in a loop of re-iterating through a result set, I really needed something more traditional that would have achieved something like this.


var myValue =  $.ajax({

            url: "/myserver/IS/mn/_vti_bin/lists.asmx",
            type: "POST",
            dataType: "xml",
            data: soapEnv,
            complete: processFiles,
            contentType: "text/xml; charset=\"utf-8\""
        });


Then process myValue 


OK, it seems like due to the Async nature of Ajax, it is not possible to do this.


So, in the end I side step the issue by separating the process into 2 Async processes.  I would output the required variables for the second process in the first loop rather than processing while the loop is running.


The outputted variables would form the call in JavaScript to the second process.


Below is the code that was on 


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Show Error Files</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style>
ul
{
margin-left:1px;
margin-top:1px;
padding-left:12px;
padding-top:0px;
}

li.completed

{
list-style-image: url('green_small.png');
font-family:verdana,arial,helvetica,sans-serif;
font-size:8pt;
margin-left:0px;
}

li.error

{
list-style-image: url('red_small.png');
font-family:verdana,arial,helvetica,sans-serif;
font-size:8pt;
margin-left:0px;
}

li.noerrorfiles

{
list-style-image: url('green_small.png');
font-family:verdana,arial,helvetica,sans-serif;
font-size:8pt;
margin-left:12px;
}

body

{
margin-left:1px;
}

</style>


<script type="text/javascript" src="/myserver/IS/mn/Files%20To%20Share/jquery-1.10.2.js"></script>

<script type="text/javascript">
    // variable for how many files need to be read.  So that it can be shared across the functions.
    var giFileCount = 0;
    var gOutPutHTMLString = "";
    var gJobStatusFileURLPath = "";
var gMatchCode = "";

//getJobStatusFiles1("2014-12-19 04:22:01")
//alert("Here..");
//$(document).ready(function() {
getErrorFiles();
//})

// Get all Error Files for Today
function getErrorFiles()
{
var strDate = new Date();
var strToday = strDate.getFullYear() + "-" + (strDate.getMonth()+1) + "-" + pad(strDate.getDate());

$(document).ready(function() {
        var soapEnv =
            "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'> \
                <soapenv:Body> \
                     <GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'> \
                        <listName>IT team to follow up</listName> \
                        <query><Query><Where><Geq><FieldRef Name='Modified'/><Value Type='DateTime' IncludeTimeValue='FALSE'>"+strToday+"</Value></Geq> \
                        </Where><OrderBy><FieldRef Name='ID' Ascending='TRUE' /></OrderBy></Query></query> \
                        <viewFields> \
                            <ViewFields> \
                               <FieldRef Name='Name' /> \
                              <FieldRef Name='Modified' /> \
                           </ViewFields> \
                        </viewFields> \
                    </GetListItems> \
                </soapenv:Body> \
            </soapenv:Envelope>";

        $.ajax({

            url: "/myserver/IS/mn/_vti_bin/lists.asmx",
            type: "POST",
            dataType: "xml",
            data: soapEnv,
            complete: processFiles,
            contentType: "text/xml; charset=\"utf-8\""
        });
    });

}


function processFiles(xData, status)
{
var strForDropDown = "";   
   $(xData.responseXML).find("z\\:row, row").each(function() {
            strForDropDown = strForDropDown + $(this).attr("ows_ID") + "@" + $(this).attr("ows_FileRef") + "@" + $(this).attr("ows_Modified") + "@" +"\n";
        });
        // Now populate the department dropdown with our extracted data
        getFiles(strForDropDown);
}


function getFiles(strForDropDown)
{

if (strForDropDown != "")
{

var item_array = strForDropDown.split("\n");
giFileCount = item_array.length - 1;
for (var iCount = 0; iCount < (item_array.length-1); iCount++)
{
//alert(item_array[iCount].toString());
var items = item_array[iCount].split("@");

try
{

var strfileName = items[1].slice((items[1].indexOf('#')+1),items[1].len);
strfileName = "/" + strfileName;
var strfileModified =  items[2];

//alert(items[1]);

var arrItemsCodes = items[1].split("_");
var strCodes = arrItemsCodes[arrItemsCodes.length-1]
var arrMatchCode = strCodes.split(".");
var strCode = arrMatchCode[0]

//alert(strCode);

//alert(strfileModified);
readFile(strfileName, iCount, strfileModified, strCode);

}
catch(ex)
{
alert("Possible array out of bound error - getFiles(strForDropDown)");
}

}

}
else
{
showNoErrorMessage();
}

}

// function to read from a text file held in SharePoint instead of SharePoint list data
function readFile(sName, nCurrentCount, strModified, strCodeMatch)
{
var iCurrentCount = nCurrentCount;
var bCloseList = "";
var bStartList = "";

if (nCurrentCount == 0)

{
bStartList = true;
}
else
{
bStartList = false;
}

if (giFileCount == (nCurrentCount+1))
{
bCloseList = true;
}
else
{
bCloseList = false;
}

//alert(iCurrentCount + " " + bStartList + " " + bCloseList);
var request = jQuery.get(sName, function(data) {
    displayFile(data, bStartList, bCloseList, strModified, strCodeMatch);
    //process text file line by line
    //$('#div').html(data.replace('n','<br />'));
    //$('#StatusMessagesTest').html(data.replace('\n','<br />'));
});

request.error(function(jqXHR, textStatus, errorThrown) {
  //showNoErrorMessage();
});
}

function pad(d) 
{
        return (d < 10) ? '0' + d.toString() : d.toString();
}

function showNoErrorMessage()

{
var strOutput;
strOutput = "<ul class='statusMessage'>";

strOutput = strOutput + "<li class='noerrorfiles'>";

        strOutput = strOutput + "No Errors - All Completed";
        strOutput = strOutput + "</li>";
        
        strOutput = strOutput + "</ul>";
document.getElementById("StatusMessages").innerHTML = strOutput;

}


function setModifiedTo(sMod)

{
var sReturnValue = "";
var item_array = sMod.split(":");

sReturnValue = item_array[0] + ":" + pad((parseInt(item_array[1], 10) + 1).toString()) + ":00Z";  


return sReturnValue;

}

// Get all Error Files for Today

function getJobStatusFiles(strModified, strMatchCode)
{
//alert(strModified);

strModified = strModified.replace(" ", "T");
strModified = strModified + "Z";
//alert(strModified);
//strModified = "2014-12-18T04:22:22Z";
var strModifiedTo = setModifiedTo(strModified);
//alert(strModifiedTo);
$(document).ready(function() {
        gMatchCode = strMatchCode;  // Copy the MatchCode variable into a global first because of Async call we need it later to do a match if more than 1 JobStatus file is returned for the given modified time.
        var soapEnv =
            "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'> \
                <soapenv:Body> \
                     <GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'> \
                        <listName>New Job Status</listName> \
                        <query><Query><Where><And><Geq><FieldRef Name='Modified'/><Value Type='DateTime' IncludeTimeValue='TRUE'>"+strModified+"</Value></Geq> \
                        <Leq><FieldRef Name='Modified'/><Value Type='DateTime' IncludeTimeValue='TRUE'>"+strModifiedTo+"</Value></Leq> \
                        </And> \
                        </Where><OrderBy><FieldRef Name='ID' Ascending='TRUE' /></OrderBy></Query></query> \
                          <viewFields> \
                            <ViewFields> \
                               <FieldRef Name='Name' /> \
                              <FieldRef Name='Modified' /> \
                           </ViewFields> \
                        </viewFields> \
                    </GetListItems> \
                </soapenv:Body> \
            </soapenv:Envelope>";

        $.ajax({
            url: "/myserver/IS/_vti_bin/lists.asmx",
            type: "POST",
            dataType: "xml",
            data: soapEnv,
            complete: processJobStatusFiles,
            contentType: "text/xml; charset=\"utf-8\""
        });
    });

}

function processJobStatusFiles(xData, status)
{
var strForDropDown = "";   
   $(xData.responseXML).find("z\\:row, row").each(function() {
            strForDropDown = strForDropDown + $(this).attr("ows_ID") + "@" + $(this).attr("ows_FileRef") + "@" + $(this).attr("ows_Modified") + "@" +"\n";
        });
        
        //alert(strForDropDown);
        // Now extract the file's URL links
        getJobStatusFileLinks(strForDropDown);

}


function getJobStatusFileLinks(strForDropDown)

{
var strfileNameLink = "";
//alert(gMatchCode);
if (strForDropDown != "")
{

var item_array = strForDropDown.split("\n");
//alert(item_array.length);
//alert(item_array.length);

if ((item_array.length-1) > 1)
{

for (var iCount = 0; iCount < (item_array.length-1); iCount++)
{
//alert(item_array[iCount].toString());
var items = item_array[iCount].split("@");

try
{

strfileNameLink = items[1].slice((items[1].indexOf('#')+1),items[1].len);
strfileNameLink = "/" + strfileNameLink ;
//alert("More than 1 file need to decide which is correct based on the match code for " + strfileNameLink);
var strMatchCode = gMatchCode;

if (FindMatchingFile(strMatchCode, strfileNameLink) == true)
{
return;  // Can exit as file already found and opened.
}
else
{
// If we are in the last item and still no match then open the standard log view of Job Status.
if (iCount == (item_array.length-2))
{
openFile("File cannot be found - opening today's Job Status view.");
}
}

}
catch(ex)
{
alert("Possible array out of bound error - getJobStatusFileLinks(strForDropDown)");
}

}
}
else
{
var SingleItem = item_array[0].split("@");
strfileNameLink = SingleItem[1].slice((SingleItem[1].indexOf('#')+1),SingleItem[1].len);
strfileNameLink = "/" + strfileNameLink ;
//alert("Single File " + strfileNameLink);
openFile(strfileNameLink);
}
}
else
{
// alert("No Link to File.");
openFile("File cannot be found - opening today's Job Status view.");
}

}


function FindMatchingFile(strMatchCode, strFileName)
{
var arrItemsCodes = strFileName.split("_");
var strCodes = arrItemsCodes[arrItemsCodes.length-1]
var arrMatchCode = strCodes.split(".");
var strCode = arrMatchCode[0]

if (strMatchCode == strCode)
{
openFile(strFileName);
return true;
}
else
{
return false;
}

}

function openFile(strFileNameToOpen)

{
if (UrlExists(strFileNameToOpen) == true)
{
var newwindow = window.open(strFileNameToOpen, 'window2', 'toolbar=yes,resizable=yes,directories=no,status=no,menubar=no');
}
else
{
alert(strFileNameToOpen);
var newwindow = window.open('/myserver/IS/Job%20Status/Forms/LogView.aspx?RootFolder=%2fmyserver%2fIS%2fJob%20Status%2fAudit%20Report%20%28Interfaces%29&FolderCTID=&View=%7b89D199F3%2d0B74%2d4EDC%2d8F69%2d1C1918B7F42B%7d', '_blank');
}

}


// function that can check whether URL returns not found 404.
function UrlExists(url) 
{     
// Uncomment to view full path of report that program is trying to retrieve
//alert(url);
//document.all.Report_Name_Retrieved.innerHTML = "Report Name : " + url;

if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  var http = new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  var http = new ActiveXObject("Microsoft.XMLHTTP");
  }

var http = new XMLHttpRequest();     

http.open('HEAD', url, false);     
http.send();     
return http.status!=404; 


function displayFile(strData, bWriteStart, bWriteEnd, sModified, sCodeMatch)

{
//alert(strData);
var statusMessagesArray = strData.split('\n');
var strOutput = "";
var sReturn = "";

// Check if it is beginning of items to show.
if (bWriteStart == true)
{
strOutput = "<ul class='statusMessage'>";
gOutPutHTMLString = strOutput;
        }
        
        // Build the HTML output for the items
        if (statusMessagesArray.length > 1)
{
        for (var i = 0; i < (statusMessagesArray.length-1); i++) 
        {
          //if ($("statusMessagesArray[i]:contains('Completed')"))
          if (statusMessagesArray[i].toLowerCase().indexOf('completed') > 0)
          {
          strOutput = strOutput + "<li class='completed'><a href='/myserver/IS/Job%20Status/Forms/LogView.aspx?RootFolder=%2fmyserver%2fIS%2fJob%20Status%2fAudit%20Report%20%28Interfaces%29&FolderCTID=&View=%7b89D199F3%2d0B74%2d4EDC%2d8F69%2d1C1918B7F42B%7d' '_blank'>";
          strOutput = strOutput + statusMessagesArray[i];
          strOutput = strOutput + "</a></li>";
          }
          else
          {
          //alert(sModified);
          //getJobStatusFiles(sModified);
         
          //alert("1 " + gJobStatusFileURLPath);
         
          //alert(this.gJobStatusFileURLPath);
          //strOutput = strOutput + "<li class='error'><a href='/myserver/IS/Job%20Status/Forms/LogView.aspx?RootFolder=%2fmyserver%2fIS%2fJob%20Status%2fAudit%20Report%20%28Interfaces%29&FolderCTID=&View=%7b89D199F3%2d0B74%2d4EDC%2d8F69%2d1C1918B7F42B%7d' target='_blank'>";
         
          strOutput = strOutput + "<li class='error'><a href='JavaScript:getJobStatusFiles(&#39;" + sModified  + "&#39;,&#39;" + sCodeMatch +"&#39;);'>";
          strOutput = strOutput + statusMessagesArray[i];
          strOutput = strOutput + "</a></li>";
         
          }
        }
        }
        else
        {
       
        if (statusMessagesArray.length == 1)
{
        if (statusMessagesArray[0].toLowerCase().indexOf('completed') > 0)
          {
          strOutput = strOutput + "<li class='completed'><a href='/myserver/IS/Job%20Status/Forms/LogView.aspx?RootFolder=%2fmyserver%2fIS%2fJob%20Status%2fAudit%20Report%20%28Interfaces%29&FolderCTID=&View=%7b89D199F3%2d0B74%2d4EDC%2d8F69%2d1C1918B7F42B%7d' '_blank'>";
          strOutput = strOutput + statusMessagesArray[0];
          strOutput = strOutput + "</a></li>";
          }
          else
          {
          //alert(sModified);gJobStatusFileURLPath 
          //getJobStatusFiles(sModified);
         
          //alert("2" + gJobStatusFileURLPath.responseXML);
//strOutput = strOutput + "<li class='error'><a href='/myserver/IS/Job%20Status/Forms/LogView.aspx?RootFolder=%2fmyserver%2fIS%2fJob%20Status%2fAudit%20Report%20%28Interfaces%29&FolderCTID=&View=%7b89D199F3%2d0B74%2d4EDC%2d8F69%2d1C1918B7F42B%7d' target='_blank'>";
          //alert(this.gJobStatusFileURLPath);
          strOutput = strOutput + "<li class='error'><a href='JavaScript:getJobStatusFiles(&#39;" + sModified + "&#39;,&#39;" + sCodeMatch + "&#39;);'>";
          strOutput = strOutput + statusMessagesArray[0];
          strOutput = strOutput + "</a></li>";
         
          }
          }
        }
        
//alert(giFileCount + " " + nCurrentCount);
// Check if need to end the UL
if (bWriteEnd == true)
{
//alert(strOutput)
strOutput = strOutput + "</ul>";
//document.getElementById("StatusMessages").innerHTML = document.getElementById("StatusMessages").innerHTML + strOutput;
gOutPutHTMLString = gOutPutHTMLString + strOutput;
}
else
{
//alert(strOutput)
//document.getElementById("StatusMessages").innerHTML = document.getElementById("StatusMessages").innerHTML + strOutput;
gOutPutHTMLString = gOutPutHTMLString + strOutput;
}

// write the HTML into the DIV
document.getElementById("StatusMessages").innerHTML = gOutPutHTMLString;

}


</script>

</head>

<BODY>
<div id="StatusMessages" style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px; margin-left:0px">
</div> 
<script type="text/javascript">
</script>

</BODY></html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Show Error Files</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style>
ul
{
margin-left:1px;
margin-top:1px;
padding-left:12px;
padding-top:0px;
}

li.completed
{
list-style-image: url('green_small.png');
font-family:verdana,arial,helvetica,sans-serif;
font-size:8pt;
margin-left:0px;
}

li.error
{
list-style-image: url('red_small.png');
font-family:verdana,arial,helvetica,sans-serif;
font-size:8pt;
margin-left:0px;
}

li.noerrorfiles
{
list-style-image: url('green_small.png');
font-family:verdana,arial,helvetica,sans-serif;
font-size:8pt;
margin-left:12px;
}

body
{
margin-left:1px;
}

</style>

<script type="text/javascript" src="/myserver/IS/mn/Files%20To%20Share/jquery-1.10.2.js"></script>
<script type="text/javascript">
    // variable for how many files need to be read.  So that it can be shared across the functions.
    var giFileCount = 0;
    var gOutPutHTMLString = "";
    var gJobStatusFileURLPath = "";
var gMatchCode = "";
//getJobStatusFiles1("2014-12-19 04:22:01")
//alert("Here..");
//$(document).ready(function() {
getErrorFiles();
//})
// Get all Error Files for Today
function getErrorFiles()
{
var strDate = new Date();
var strToday = strDate.getFullYear() + "-" + (strDate.getMonth()+1) + "-" + pad(strDate.getDate());
$(document).ready(function() {
        var soapEnv =
            "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'> \
                <soapenv:Body> \
                     <GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'> \
                        <listName>IT team to follow up</listName> \
                        <query><Query><Where><Geq><FieldRef Name='Modified'/><Value Type='DateTime' IncludeTimeValue='FALSE'>"+strToday+"</Value></Geq> \
                        </Where><OrderBy><FieldRef Name='ID' Ascending='TRUE' /></OrderBy></Query></query> \
                        <viewFields> \
                            <ViewFields> \
                               <FieldRef Name='Name' /> \
                              <FieldRef Name='Modified' /> \
                           </ViewFields> \
                        </viewFields> \
                    </GetListItems> \
                </soapenv:Body> \
            </soapenv:Envelope>";

        $.ajax({
            url: "/myserver/IS/mn/_vti_bin/lists.asmx",
            type: "POST",
            dataType: "xml",
            data: soapEnv,
            complete: processFiles,
            contentType: "text/xml; charset=\"utf-8\""
        });
    });

}
function processFiles(xData, status)
{
var strForDropDown = "";   
   $(xData.responseXML).find("z\\:row, row").each(function() {
            strForDropDown = strForDropDown + $(this).attr("ows_ID") + "@" + $(this).attr("ows_FileRef") + "@" + $(this).attr("ows_Modified") + "@" +"\n";
        });
        // Now populate the department dropdown with our extracted data
        getFiles(strForDropDown);
}

function getFiles(strForDropDown)
{
if (strForDropDown != "")
{
var item_array = strForDropDown.split("\n");
giFileCount = item_array.length - 1;
for (var iCount = 0; iCount < (item_array.length-1); iCount++)
{
//alert(item_array[iCount].toString());
var items = item_array[iCount].split("@");
try
{
var strfileName = items[1].slice((items[1].indexOf('#')+1),items[1].len);
strfileName = "/" + strfileName;
var strfileModified =  items[2];
//alert(items[1]);
var arrItemsCodes = items[1].split("_");
var strCodes = arrItemsCodes[arrItemsCodes.length-1]
var arrMatchCode = strCodes.split(".");
var strCode = arrMatchCode[0]
//alert(strCode);
//alert(strfileModified);
readFile(strfileName, iCount, strfileModified, strCode);
}
catch(ex)
{
alert("Possible array out of bound error - getFiles(strForDropDown)");
}
}
}
else
{
showNoErrorMessage();
}
}
// function to read from a text file held in SharePoint instead of SharePoint list data
function readFile(sName, nCurrentCount, strModified, strCodeMatch)
{
var iCurrentCount = nCurrentCount;
var bCloseList = "";
var bStartList = "";

if (nCurrentCount == 0)
{
bStartList = true;
}
else
{
bStartList = false;
}
if (giFileCount == (nCurrentCount+1))
{
bCloseList = true;
}
else
{
bCloseList = false;
}
//alert(iCurrentCount + " " + bStartList + " " + bCloseList);
var request = jQuery.get(sName, function(data) {
    displayFile(data, bStartList, bCloseList, strModified, strCodeMatch);
    //process text file line by line
    //$('#div').html(data.replace('n','<br />'));
    //$('#StatusMessagesTest').html(data.replace('\n','<br />'));
});
request.error(function(jqXHR, textStatus, errorThrown) {
  //showNoErrorMessage();
});
}
function pad(d) 
{
        return (d < 10) ? '0' + d.toString() : d.toString();
}

function showNoErrorMessage()
{
var strOutput;
strOutput = "<ul class='statusMessage'>";

strOutput = strOutput + "<li class='noerrorfiles'>";
        strOutput = strOutput + "No Errors - All Completed";
        strOutput = strOutput + "</li>";
        
        strOutput = strOutput + "</ul>";
document.getElementById("StatusMessages").innerHTML = strOutput;

}

function setModifiedTo(sMod)
{
var sReturnValue = "";
var item_array = sMod.split(":");

sReturnValue = item_array[0] + ":" + pad((parseInt(item_array[1], 10) + 1).toString()) + ":00Z";  

return sReturnValue;
}

// Get all Error Files for Today
function getJobStatusFiles(strModified, strMatchCode)
{
//alert(strModified);
strModified = strModified.replace(" ", "T");
strModified = strModified + "Z";
//alert(strModified);
//strModified = "2014-12-18T04:22:22Z";
var strModifiedTo = setModifiedTo(strModified);
//alert(strModifiedTo);
$(document).ready(function() {
        gMatchCode = strMatchCode;  // Copy the MatchCode variable into a global first because of Async call we need it later to do a match if more than 1 JobStatus file is returned for the given modified time.
        var soapEnv =
            "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'> \
                <soapenv:Body> \
                     <GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'> \
                        <listName>New Job Status</listName> \
                        <query><Query><Where><And><Geq><FieldRef Name='Modified'/><Value Type='DateTime' IncludeTimeValue='TRUE'>"+strModified+"</Value></Geq> \
                        <Leq><FieldRef Name='Modified'/><Value Type='DateTime' IncludeTimeValue='TRUE'>"+strModifiedTo+"</Value></Leq> \
                        </And> \
                        </Where><OrderBy><FieldRef Name='ID' Ascending='TRUE' /></OrderBy></Query></query> \
                          <viewFields> \
                            <ViewFields> \
                               <FieldRef Name='Name' /> \
                              <FieldRef Name='Modified' /> \
                           </ViewFields> \
                        </viewFields> \
                    </GetListItems> \
                </soapenv:Body> \
            </soapenv:Envelope>";
        $.ajax({
            url: "/myserver/IS/_vti_bin/lists.asmx",
            type: "POST",
            dataType: "xml",
            data: soapEnv,
            complete: processJobStatusFiles,
            contentType: "text/xml; charset=\"utf-8\""
        });
    });
}
function processJobStatusFiles(xData, status)
{
var strForDropDown = "";   
   $(xData.responseXML).find("z\\:row, row").each(function() {
            strForDropDown = strForDropDown + $(this).attr("ows_ID") + "@" + $(this).attr("ows_FileRef") + "@" + $(this).attr("ows_Modified") + "@" +"\n";
        });
        
        //alert(strForDropDown);
        // Now extract the file's URL links
        getJobStatusFileLinks(strForDropDown);

}

function getJobStatusFileLinks(strForDropDown)
{
var strfileNameLink = "";
//alert(gMatchCode);
if (strForDropDown != "")
{
var item_array = strForDropDown.split("\n");
//alert(item_array.length);
//alert(item_array.length);
if ((item_array.length-1) > 1)
{
for (var iCount = 0; iCount < (item_array.length-1); iCount++)
{
//alert(item_array[iCount].toString());
var items = item_array[iCount].split("@");
try
{
strfileNameLink = items[1].slice((items[1].indexOf('#')+1),items[1].len);
strfileNameLink = "/" + strfileNameLink ;
//alert("More than 1 file need to decide which is correct based on the match code for " + strfileNameLink);
var strMatchCode = gMatchCode;
if (FindMatchingFile(strMatchCode, strfileNameLink) == true)
{
return;  // Can exit as file already found and opened.
}
else
{
// If we are in the last item and still no match then open the standard log view of Job Status.
if (iCount == (item_array.length-2))
{
openFile("File cannot be found - opening today's Job Status view.");
}
}
}
catch(ex)
{
alert("Possible array out of bound error - getJobStatusFileLinks(strForDropDown)");
}
}
}
else
{
var SingleItem = item_array[0].split("@");
strfileNameLink = SingleItem[1].slice((SingleItem[1].indexOf('#')+1),SingleItem[1].len);
strfileNameLink = "/" + strfileNameLink ;
//alert("Single File " + strfileNameLink);
openFile(strfileNameLink);
}
}
else
{
// alert("No Link to File.");
openFile("File cannot be found - opening today's Job Status view.");
}

}
function FindMatchingFile(strMatchCode, strFileName)
{
var arrItemsCodes = strFileName.split("_");
var strCodes = arrItemsCodes[arrItemsCodes.length-1]
var arrMatchCode = strCodes.split(".");
var strCode = arrMatchCode[0]
if (strMatchCode == strCode)
{
openFile(strFileName);
return true;
}
else
{
return false;
}
}

function openFile(strFileNameToOpen)
{
if (UrlExists(strFileNameToOpen) == true)
{
var newwindow = window.open(strFileNameToOpen, 'window2', 'toolbar=yes,resizable=yes,directories=no,status=no,menubar=no');
}
else
{
alert(strFileNameToOpen);
var newwindow = window.open('/myserver/IS/Job%20Status/Forms/LogView.aspx?RootFolder=%2fmyserver%2fIS%2fJob%20Status%2fAudit%20Report%20%28Interfaces%29&FolderCTID=&View=%7b89D199F3%2d0B74%2d4EDC%2d8F69%2d1C1918B7F42B%7d', '_blank');
}

}
// function that can check whether URL returns not found 404.
function UrlExists(url) 
{     
// Uncomment to view full path of report that program is trying to retrieve
//alert(url);
//document.all.Report_Name_Retrieved.innerHTML = "Report Name : " + url;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  var http = new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  var http = new ActiveXObject("Microsoft.XMLHTTP");
  }

var http = new XMLHttpRequest();     
http.open('HEAD', url, false);     
http.send();     
return http.status!=404; 

function displayFile(strData, bWriteStart, bWriteEnd, sModified, sCodeMatch)
{
//alert(strData);
var statusMessagesArray = strData.split('\n');
var strOutput = "";
var sReturn = "";
// Check if it is beginning of items to show.
if (bWriteStart == true)
{
strOutput = "<ul class='statusMessage'>";
gOutPutHTMLString = strOutput;
        }
        
        // Build the HTML output for the items
        if (statusMessagesArray.length > 1)
{
        for (var i = 0; i < (statusMessagesArray.length-1); i++) 
        {
          //if ($("statusMessagesArray[i]:contains('Completed')"))
          if (statusMessagesArray[i].toLowerCase().indexOf('completed') > 0)
          {
          strOutput = strOutput + "<li class='completed'><a href='/myserver/IS/Job%20Status/Forms/LogView.aspx?RootFolder=%2fmyserver%2fIS%2fJob%20Status%2fAudit%20Report%20%28Interfaces%29&FolderCTID=&View=%7b89D199F3%2d0B74%2d4EDC%2d8F69%2d1C1918B7F42B%7d' '_blank'>";
          strOutput = strOutput + statusMessagesArray[i];
          strOutput = strOutput + "</a></li>";
          }
          else
          {
          //alert(sModified);
          //getJobStatusFiles(sModified);
         
          //alert("1 " + gJobStatusFileURLPath);
         
          //alert(this.gJobStatusFileURLPath);
          //strOutput = strOutput + "<li class='error'><a href='/myserver/IS/Job%20Status/Forms/LogView.aspx?RootFolder=%2fmyserver%2fIS%2fJob%20Status%2fAudit%20Report%20%28Interfaces%29&FolderCTID=&View=%7b89D199F3%2d0B74%2d4EDC%2d8F69%2d1C1918B7F42B%7d' target='_blank'>";
         
          strOutput = strOutput + "<li class='error'><a href='JavaScript:getJobStatusFiles(&#39;" + sModified  + "&#39;,&#39;" + sCodeMatch +"&#39;);'>";
          strOutput = strOutput + statusMessagesArray[i];
          strOutput = strOutput + "</a></li>";
         
          }
        }
        }
        else
        {
       
        if (statusMessagesArray.length == 1)
{
        if (statusMessagesArray[0].toLowerCase().indexOf('completed') > 0)
          {
          strOutput = strOutput + "<li class='completed'><a href='/myserver/IS/Job%20Status/Forms/LogView.aspx?RootFolder=%2fmyserver%2fIS%2fJob%20Status%2fAudit%20Report%20%28Interfaces%29&FolderCTID=&View=%7b89D199F3%2d0B74%2d4EDC%2d8F69%2d1C1918B7F42B%7d' '_blank'>";
          strOutput = strOutput + statusMessagesArray[0];
          strOutput = strOutput + "</a></li>";
          }
          else
          {
          //alert(sModified);gJobStatusFileURLPath 
          //getJobStatusFiles(sModified);
         
          //alert("2" + gJobStatusFileURLPath.responseXML);
//strOutput = strOutput + "<li class='error'><a href='/myserver/IS/Job%20Status/Forms/LogView.aspx?RootFolder=%2fmyserver%2fIS%2fJob%20Status%2fAudit%20Report%20%28Interfaces%29&FolderCTID=&View=%7b89D199F3%2d0B74%2d4EDC%2d8F69%2d1C1918B7F42B%7d' target='_blank'>";
          //alert(this.gJobStatusFileURLPath);
          strOutput = strOutput + "<li class='error'><a href='JavaScript:getJobStatusFiles(&#39;" + sModified + "&#39;,&#39;" + sCodeMatch + "&#39;);'>";
          strOutput = strOutput + statusMessagesArray[0];
          strOutput = strOutput + "</a></li>";
         
          }
          }
        }
        
//alert(giFileCount + " " + nCurrentCount);
// Check if need to end the UL
if (bWriteEnd == true)
{
//alert(strOutput)
strOutput = strOutput + "</ul>";
//document.getElementById("StatusMessages").innerHTML = document.getElementById("StatusMessages").innerHTML + strOutput;
gOutPutHTMLString = gOutPutHTMLString + strOutput;
}
else
{
//alert(strOutput)
//document.getElementById("StatusMessages").innerHTML = document.getElementById("StatusMessages").innerHTML + strOutput;
gOutPutHTMLString = gOutPutHTMLString + strOutput;
}
// write the HTML into the DIV
document.getElementById("StatusMessages").innerHTML = gOutPutHTMLString;
}
</script>

</head>
<BODY>
<div id="StatusMessages" style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px; margin-left:0px">
</div> 
<script type="text/javascript">
</script>
</BODY></html>




No comments:

Post a Comment