Advertisement
Fabbrogas

Untitled

Jun 6th, 2016
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var app = {
  2.     // Application Constructor
  3.     initialize: function() {
  4.         this.bindEvents();
  5.     persistenceTest();
  6.     databaseCreateSchema(true, false, false);
  7.     setupHomePageProjects();
  8.     createEventHandlers();
  9.     },
  10.     // Bind Event Listeners
  11.     //
  12.     // Bind any events that are required on startup. Common events are:
  13.     // 'load', 'deviceready', 'offline', and 'online'.
  14.     bindEvents: function() {
  15.         document.addEventListener('deviceready', this.onDeviceReady, false);
  16.     },
  17.     // deviceready Event Handler
  18.     //
  19.     // The scope of 'this' is the event. In order to call the 'receivedEvent'
  20.     // function, we must explicitly call 'app.receivedEvent(...);'
  21.     onDeviceReady: function() {
  22.         app.receivedEvent('deviceready');
  23.     },
  24.     // Update DOM on a Received Event
  25.     receivedEvent: function(id) {
  26.         var parentElement = document.getElementById(id);
  27.         var listeningElement = parentElement.querySelector('.listening');
  28.         var receivedElement = parentElement.querySelector('.received');
  29.  
  30.         listeningElement.setAttribute('style', 'display:none;');
  31.         receivedElement.setAttribute('style', 'display:block;');
  32.  
  33.         console.log('Received Event: ' + id);
  34.     }
  35.  
  36.  
  37. };
  38.  
  39. app.initialize();
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72. var Task = persistence.define('Task', {
  73.   name: "TEXT",
  74.   done: "BOOL"
  75. });
  76.  
  77.  
  78.  
  79. function persistenceTest() {
  80.  
  81.     console.log("persistenceTest1");
  82.     persistence.store.websql.config(persistence, 'ptest', 'A database description', 5 * 1024 * 1024);
  83.  
  84.     console.log("persistenceTest2");
  85.  
  86.     //persistenceSchemaSync();
  87.     console.log("persistenceTest3");
  88.  
  89.     //persistenceReset();
  90.     console.log("persistenceTest4");
  91. }
  92.  
  93.  
  94.  
  95. function persistenceSchemaSync() {
  96. }
  97.  
  98. function persistenceReset() {
  99.     persistenceFlush();
  100. };
  101.  
  102. function persistenceFlush() {
  103. }
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123. function testJSONLoad() {
  124.     console.log("testJSONLoad1");
  125.     //  $.getJSON("http://localhost:8080/cc/tablet/UserTestPassword.jsp", {UserName: "ky1a21w2a1wv1lemore", Password: "b2t$g6y*"}, function(data) {
  126.     //  $.getJSON("/cc/tablet/UserTestPassword.jsp", {UserName: "ky1a21w2a1wv1lemore", Password: "b2t$g6y*"}, function(data) {
  127.     $.getJSON("http://10.60.74.102:8080/cc/tablet/UserTestPassword.jsp", {UserName: "ky1a21w2a1wv1lemore", Password: "b2t$g6y*"}, function(data) {
  128.         //  $.getJSON("alex.builderlynx.com:8080/cc/tablet/UserTestPassword.jsp", {UserName: "ky1a21w2a1wv1lemore", Password: "b2t$g6y*"}, function(data) {
  129.         console.log(data);
  130.         console.log(data.AuthenticationPassword);
  131.         console.log(data.AuthenticationUsername);
  132.         console.log(data.AuthenticationRequestResult);
  133.         alert(data.AuthenticationRequestResult);
  134.     });
  135. console.log("testJSONLoad2");
  136. }
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163. // Wait for PhoneGap to load
  164. //
  165. document.addEventListener("deviceready", onDeviceReady, false);
  166.  
  167. // PhoneGap is ready
  168. //
  169. function onDeviceReady() {
  170.     console.log("onDeviceReady***1");
  171.  
  172.  
  173. }
  174.  
  175. function cleanString(str) {
  176.     str = str.replace(/[^a-zA-Z 0-9]+/g,'');
  177.     str = str.replace(/[ ]+/g, '');
  178.     return str;
  179. }
  180.  
  181. function processUnitDirectory(blUnit, actionOnDirectory) {
  182.     blProject = blUnit.blProject;
  183.     blUnit.fetch("BLProject", function (blProject) {
  184.         blDirectory = "BuilderLynx";
  185.         console.log("here1:" + blUnit.Name);
  186.         console.log("here1:" + blProject);
  187.         window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
  188.             function(fileSystem) {
  189.                 console.log("here2");
  190.                 fileSystem.root.getDirectory(blDirectory, {create: true}, function (dirBuilderLynx) {
  191.                     console.log("here3");
  192.                     dirBuilderLynx.getDirectory(cleanString(blProject.Name), {create: true}, function (dirProject) {
  193.                         console.log("here4");
  194.                         dirProject.getDirectory(cleanString(blUnit.Name), {create: true}, function (dirUnit) {
  195.                             console.log("here5");
  196.                             actionOnDirectory(dirUnit);
  197.                         }, fileOperationFail);
  198.                     }, fileOperationFail);
  199.                 }, fileOperationFail);
  200.             }, fileOperationFail);
  201.     });
  202. }
  203.  
  204. function createAndSavePDIReport(blUnit, functionSuccess) {
  205.     processUnitDirectory(blUnit, function (dirUnit) {
  206.         var fileName = cleanString(blUnit.Name) + "." + dateFormat(new Date(), "yyyy.mm.dd.hh.MM.ss") + ".html";
  207.         console.log("here6a" + fileName);
  208.         console.log("here6b" + dirUnit);
  209.         console.log("here6c" + blUnit.Name);
  210.         dirUnit.getFile(fileName, {create: true}, function (fileReport) {
  211.             console.log("here7");
  212.             fileReport.createWriter(function (fileWriterReport) {
  213.  
  214.                 console.log("here8");
  215.                 fileWriterReport.onwrite = function(evt) {
  216.                     console.log("write success***4");
  217.                 };
  218.                 fileWriterReport.onwritestart = function(evt) {
  219.                     console.log("writestart***6");
  220.                 };
  221.                 fileWriterReport.onabort = function(evt) {
  222.                     console.log("abort***7");
  223.                     functionFailure("onabort");
  224.                 };
  225.                 fileWriterReport.onerror = function(evt) {
  226.                     console.log("error***8");
  227.                     functionFailure("onerror");
  228.                 };
  229.                 fileWriterReport.onwriteend = function(evt) {
  230.                     console.log("writeend***9");
  231. //                      alert("writeend");
  232. //                      window.plugins.childBrowser.showWebPage("file:///mnt/sdcard/readme.html", { showLocationBar: true });
  233.                     console.log("writeend***10");
  234.                     functionSuccess.call();
  235.                 };
  236.  
  237.                 console.log("here9a");
  238.  
  239.                 createPDIReport(blUnit, fileWriterReport);
  240. // Investigate ContinuousFileWriter if need to do this kind of thing
  241. // http://gofgsportscompu.svn.sourceforge.net/viewvc/gofgsportscompu/trunk/www/js/continuousfilewriter.js?view=markup
  242. //                  for (i = 0; i < 100; i ++) {
  243. //                      console.log("here9b");
  244.  
  245.  
  246. //                      fileWriterReport.write(reportHTML);
  247. //                  }
  248.                 console.log("here10");
  249.             }, fileOperationFail);
  250.         }, fileOperationFail);
  251.     });
  252. }
  253.  
  254. function createPDIReport(blUnit, fileWriterReport) {
  255.  
  256.     console.log("CreatePDIReport1: " + fileWriterReport);
  257.     console.log("CreatePDIReport2: " + fileWriterReport);
  258.     var fts = BLFormTemplate.all().filter("BLProject", '=', blUnit.BLProject.id);
  259.     fts.list(null, function(results, err) {
  260.         if (results) {
  261.             console.log("CreatePDIReport3: " + results.length);
  262.             for (i = 0; i < results.length; i ++) {
  263.                 ft = results[i];
  264.                 text = ft.Text;
  265.  
  266.                 fillReport(blUnit, text, 0, fileWriterReport, function (fileWriterReport, text) {
  267.                     console.log("fillReport.finishFunction1: " + fileWriterReport);
  268.                     console.log("fillReport.finishFunction2: " + text.length);
  269.                     if (fileWriterReport != null) {
  270.                         console.log("fillReport.finishFunction3: " + text.length);
  271.                         try {
  272.                             console.log("********************");
  273.                             console.log(text);
  274.                             console.log("********************");
  275.                             fileWriterReport.write(text);
  276.                         } catch (ex) {
  277.                             console.log("fillReport.finishFunction5: " + ex);
  278.                             console.log("fillReport.finishFunction5: " + ex.message);
  279.                         }
  280.                         console.log("fillReport.finishFunction4: " + text.length);
  281.                     } else {
  282.                         console.log("fileWriterReport is null.  Using console instead");
  283.                         console.log(text);
  284.                         console.log("END");
  285.                     }
  286.                 });
  287. //                  fileWriterReport.write(text);
  288.  
  289.             }
  290.         } else {
  291.             console.log("no form templates");
  292.         }
  293.     });
  294.  
  295.     return "Some HTML Report for: " + blUnit.Name + " Generated on " + (new Date().format());
  296. }
  297.  
  298. function testFillReport() {
  299.     var units = BLUnit.all().filter("RemoteID", '=', "1");
  300.     units.one(null, function(result, err) {
  301.         if (result) {
  302.             unit = result;
  303.  
  304.             fillReport(unit, "PDI REPORT\n\nProject: #Project.Name.99#\n #Project.Plan.99#\nUser: #User.Name1.99# #User.Name2.99# #User.Name3.99# #User.Name4.99#\nUnit: #Unit.Name.99##Unit.Name.99##Unit.Name.99##System.Date# Some more text\nClosingDate: #Unit.Buyer Closing Date.99#\nEnd \nUnit: #Unit.Name.99# of PDI Report\nUnit: #Unit.Name.99#\nProject: #User.Name1.99# #User.Name2.99# #User.Name3.99# #User.Name4.99#\n\n\n#Insert.UnitDeficiencies#\n",
  305.                       0, null, function (fileWriterReport, text) {
  306. //                  console.log(text);
  307.             });
  308.         } else {
  309.             console.log("no units");
  310.         }
  311.     });
  312. }
  313.  
  314. function fillReport(blUnit, text, startingIndex, fileWriterReport, finishFunction) {
  315.     var inVar = false;
  316.     var varIndexStart = 0;
  317.     var varIndexEnd = 0;
  318.     for (i = startingIndex; i < text.length; i ++) {
  319.         var ch = text.charAt(i);
  320.         if (ch == "#") {
  321.             if ( !inVar) {
  322.                 inVar = true;
  323.                 varIndexStart = i;
  324.             } else {
  325.                 varIndexEnd = i + 1;
  326.                 break;
  327.             }
  328.         }
  329.     }
  330.  
  331.     if (inVar && varIndexStart != 0 && varIndexEnd != 0) {
  332.         var varName = text.substring(varIndexStart, varIndexEnd);
  333.         console.log("Found VarName: " + varName + " (" + varIndexStart + ", " + varIndexEnd + ")");
  334.         var origVarName = varName;
  335.         varName = varName.replace("#", "");
  336.         varName = varName.replace("#", "");
  337.         while (varName.indexOf(" ") != -1) {
  338.             varName = varName.replace(" ", "");
  339.         }
  340.         varDetails = varName.split(".");
  341.  
  342.         var objectName = "";
  343.         var propName = "";
  344.         var valLength = "";
  345.         if (varDetails.length == 3) {
  346.             // varname form: Object.Name.Length
  347.             objectName = varDetails[0];
  348.             propName = varDetails[1];
  349.             valLength = varDetails[2];
  350.         } else {
  351.             // varname form: Object.Name
  352.             objectName = varDetails[0];
  353.             propName = varDetails[1];
  354.             valLength = 99;
  355.         }
  356.         console.log("\tVar Details: " + objectName + ", " + propName + ", " + valLength);
  357.  
  358.         val = "";
  359.         if ("Unit" == objectName) {
  360.             val = blUnit[propName];
  361.             fillReportReplaceVar(blUnit, text, origVarName, val, varIndexStart, fileWriterReport, finishFunction);
  362.         } else if ("System" == objectName) {
  363.             if ("Date" == propName) {
  364.                 val = dateFormat("fullDate");
  365.                 fillReportReplaceVar(blUnit, text, origVarName, val, varIndexStart, fileWriterReport, finishFunction);
  366.             }
  367.         } else if ("Project" == objectName) {
  368.             blUnit.fetch("BLProject", function (result) {
  369.                 if (result) {
  370.                     blProject = result;
  371.                     val = blProject[propName];
  372.                     fillReportReplaceVar(blUnit, text, origVarName, val, varIndexStart, fileWriterReport, finishFunction);
  373.                 }
  374.             });
  375.         } else if ("User" == objectName) {
  376.             blUnit.fetch("BLUser", function (result) {
  377.                 if (result) {
  378.                     var blUser = result;
  379.                     val = blUser[propName];
  380.                     fillReportReplaceVar(blUnit, text, origVarName, val, varIndexStart, fileWriterReport, finishFunction);
  381.                 }
  382.             });
  383.         } else if ("Insert" == objectName) {
  384.             if ("UnitDeficiencies" == propName) {
  385.                 var defs = BLDeficiency.all().filter("BLUnit", '=', blUnit.id).prefetch("BLRoom").prefetch("BLDeficiencyType");
  386.                 defs.list(null, function(results, err) {
  387.  
  388. //                  blUnit.fetch("BLDeficiencies", function (results) {
  389.                     val = "<table width='100%'>\n";
  390.                     val += "<tr>\n";
  391.                     val += "<td>Room</td>\n";
  392.                     val += "<td>Type</td>\n";
  393.                     val += "<td>Description</td>\n";
  394.                     val += "<td>Source</td>\n";
  395.                     val += "<td>Status</td>\n";
  396.                     val += "</tr>\n";
  397.                     if (results) {
  398.                         for (i = 0; i < results.length; i ++) {
  399.                             var blDef = results[i];
  400.  
  401.                             var roomName = "";
  402.                             if (blDef.BLRoom != null) {
  403.                                 roomName = blDef.BLRoom.Name;
  404.                             }
  405.  
  406.                             var defTypeName = "";
  407.                             if (blDef.BLDeficiencyType != null) {
  408.                                 defTypeName = blDef.BLDeficiencyType.Name;
  409.                             }
  410.  
  411.                             val += "<tr>\n";
  412.                             val += "<td>" + roomName + "</td>\n";
  413.                             val += "<td>" + defTypeName + "</td>\n";
  414.                             val += "<td>" + blDef.Description + "</td>\n";
  415.                             val += "<td>" + blDef.Source + "</td>\n";
  416.                             val += "<td>" + blDef.Status + "</td>\n";
  417.                             val += "</tr>\n";
  418.                         }
  419.                     }
  420.                     val += "</table>\n";
  421.                     fillReportReplaceVar(blUnit, text, origVarName, val, varIndexStart, fileWriterReport, finishFunction);
  422.                 });
  423.             }
  424.         } else {
  425.             val = "";
  426.             fillReportReplaceVar(blUnit, text, origVarName, val, varIndexStart, fileWriterReport, finishFunction);
  427.         }
  428.  
  429.     } else {
  430.         console.log("End of form processing");
  431.         finishFunction(fileWriterReport, text)
  432.     }
  433.  
  434. }
  435.  
  436. function fillReportReplaceVar(blUnit, text, origVarName, val, varIndexStart, fileWriterReport, finishFunction) {
  437.     if (val == null) {
  438.         val = "";
  439.     }
  440.     var count = 0;
  441.     var replacementCount = 0;
  442.     while (text.indexOf(origVarName) != -1) {
  443.         text = text.replace(origVarName, val);
  444.         if (count > 200) {
  445.             break;
  446.         }
  447.         replacementCount ++;
  448.         count ++;
  449.     }
  450.  
  451.     console.log("replacement Count: " + replacementCount);
  452.     var newStartingIndex = varIndexStart + val.length + 1;
  453.  
  454.     fillReport(blUnit, text, newStartingIndex, fileWriterReport, finishFunction);
  455. }
  456.  
  457.  
  458. function fileOperationFail(error) {
  459.     console.log("fileOperationFail***2");
  460.     errorDesc = "";
  461.     if (error.code == FileError.NOT_FOUND_ERR) {
  462.         errorDesc = error.code + "NOT_FOUND_ERR";
  463.     } else if (error.code == FileError.SECURITY_ERR) {
  464.         errorDesc = error.code + "SECURITY_ERR";
  465.     } else if (error.code == FileError.ABORT_ERR) {
  466.         errorDesc = error.code + "ABORT_ERR";
  467.     } else if (error.code == FileError.NOT_READABLE_ERR) {
  468.         errorDesc = error.code + "NOT_READABLE_ERR";
  469.     } else if (error.code == FileError.ENCODING_ERR) {
  470.         errorDesc = error.code + "ENCODING_ERR";
  471.     } else if (error.code == FileError.NO_MODIFICATION_ALLOWED_ERR) {
  472.         errorDesc = error.code + "NO_MODIFICATION_ALLOWED_ERR";
  473.     } else if (error.code == FileError.INVALID_STATE_ERR) {
  474.         errorDesc = error.code + "INVALID_STATE_ERR";
  475.     } else if (error.code == FileError.SYNTAX_ERR) {
  476.         errorDesc = error.code + "SYNTAX_ERR";
  477.     } else if (error.code == FileError.INVALID_MODIFICATION_ERR) {
  478.         errorDesc = error.code + "INVALID_MODIFICATION_ERR";
  479.     } else if (error.code == FileError.QUOTA_EXCEEDED_ERR) {
  480.         errorDesc = error.code + "QUOTA_EXCEEDED_ERR";
  481.     } else if (error.code == FileError.TYPE_MISMATCH_ERR) {
  482.         errorDesc = error.code + "TYPE_MISMATCH_ERR";
  483.     } else if (error.code == FileError.PATH_EXISTS_ERR) {
  484.         errorDesc = error.code + "PATH_EXISTS_ERR";
  485.     }
  486.     console.log(errorDesc);
  487.     displayErrorMessage(errorDesc);
  488. }
  489.  
  490.  
  491. function displayErrorMessage() {
  492.     $('#PageReportError').html(message);
  493.     $('#PageReportError').popup();
  494. }
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515. SQLDatabaseName = "BuilderLynxPDI";
  516. SQLDatabaseVersion = "1.0";
  517. SQLDatabaseSize = 5 * 1024 * 1024;
  518. SQLDatabase = null;
  519. SQLQueries = 0;
  520. SQLErrors = 0;
  521.  
  522. var BLProject = BLProject != null ? BLProject : null;
  523. var BLUnit = BLUnit != null ? BLUnit : null;
  524. var BLUser = BLUser != null ? BLUser : null;
  525. var BLRoom = BLRoom != null ? BLRoom : null;
  526. var BLDeficiencyType = BLDeficiencyType != null ? BLDeficiencyType : null;
  527. var BLDeficiency = BLDeficiency != null ? BLDeficiency : null;
  528. var BLSupplierDepartment = BLSupplierDepartment != null ? BLSupplierDepartment : null;
  529.  
  530. //PROVA SALVATAGGIO DATI CAMERA PER OGNI DEFICIENCY! *******************************************
  531. var BLPic = BLPic != null ? BLPic : null;
  532.  
  533.  
  534.  
  535.  
  536. // Populate the database
  537.  
  538. function databaseCreateSchema(resetSchema, populateDatabase, dropAllData) {
  539.  
  540.     console.log("Create BLProject");
  541.     BLProject = persistence.define('BLProject', {
  542.         RemoteID: "INT",
  543.         Name: "TEXT",
  544.         CompanyName: "TEXT",
  545.         TarionRegistrationNumber: "TEXT",
  546.         Municipality: "TEXT",
  547.         Domain: "TEXT",
  548.     });
  549.  
  550.  
  551.     console.log("Create BLUnit");
  552.     BLUnit = persistence.define('BLUnit', {
  553.         RemoteID: "INT",
  554.         Name: "TEXT",
  555.         BuyerClosingDate: "TEXT",
  556.         MunicipalAddress: "TEXT",
  557.         City: "TEXT",
  558.         TarionEnrollmentNumber: "TEXT",
  559.     });
  560.     BLProject.hasMany("BLUnits", BLUnit, "BLProject");
  561.  
  562.     console.log("Create BLUser");
  563.     BLUser = persistence.define('BLUser', {
  564.         RemoteID: "INT",
  565.         Username: "TEXT",
  566.         Password: "TEXT",
  567.         Name1: "TEXT",
  568.         Name2: "TEXT",
  569.         Name3: "TEXT",
  570.         Name4: "TEXT",
  571.         Phone1: "TEXT",
  572.         Phone2: "TEXT",
  573.         Email: "TEXT",
  574.         Street: "TEXT",
  575.         City: "TEXT",
  576.         Province: "TEXT",
  577.         PostalCode: "TEXT",
  578.     });
  579.     BLUser.hasOne("BLProject", BLProject);
  580.     BLUser.hasOne("BLUnit", BLUnit);
  581.     BLUnit.hasOne("BLUser", BLUser);
  582.     BLProject.hasOne("BLUser", BLUser);
  583.  
  584.  
  585.     console.log("Create BLRoom");
  586.     BLRoom = persistence.define('BLRoom', {
  587.         RemoteID: "INT",
  588.         Name: "TEXT",
  589.     });
  590.     BLProject.hasMany("BLRooms", BLRoom, "BLProject");
  591.  
  592.  
  593.     console.log("Create BLSupplierDepartment");
  594.     BLSupplierDepartment = persistence.define('BLSupplierDepartment', {
  595.         RemoteID: "INT",
  596.         CompanyName: "TEXT",
  597.         ContactName: "TEXT",
  598.         Phone1: "TEXT",
  599.         Phone2: "TEXT",
  600.         Email: "TEXT",
  601.     });
  602.     BLProject.hasMany("BLSupplierDepartments", BLSupplierDepartment, "BLProject");
  603.  
  604.  
  605.     console.log("Create BLDeficiencyType");
  606.     BLDeficiencyType = persistence.define('BLDeficiencyType', {
  607.         RemoteID: "INT",
  608.         Name: "TEXT",
  609.     });
  610.     BLProject.hasMany("BLDeficiencyTypes", BLDeficiencyType, "BLProject");
  611.     BLDeficiencyType.hasOne("BLSupplierDepartment", BLSupplierDepartment);
  612.  
  613.     console.log("Create BLDeficiencyTypeDescription");
  614.     BLDeficiencyTypeDescription = persistence.define('BLDeficiencyTypeDescription', {
  615.         RemoteID: "INT",
  616.         Description: "TEXT",
  617.     });
  618.     BLDeficiencyTypeDescription.hasOne("BLDeficiencyType", BLDeficiencyType);
  619.     BLDeficiencyType.hasMany("BLDeficiencyTypeDescriptions", BLDeficiencyTypeDescription, "BLDeficiencyType");
  620.  
  621.  
  622.  
  623.     console.log("Create BLFormTemplate");
  624.     BLFormTemplate = persistence.define('BLFormTemplate', {
  625.         RemoteID: "INT",
  626.         Title: "TEXT",
  627.         Description: "TEXT",
  628.         Text: "TEXT",
  629.     });
  630.     BLProject.hasMany("BLFormTemplates", BLFormTemplate, "BLProject");
  631.  
  632.     //PROVA CAMERA *****************************************************************************
  633.     /*console.log("Create BLPics");
  634.     BLPics = persistence.define('BLPics', {
  635.         RemoteID: "INT"
  636.         //Pics: "OBJECT"
  637.     });
  638.     BLProject.hasMany("BLPics", BLPics, "BLProject");*/
  639.  
  640.  
  641.     console.log("Create BLDeficiency");
  642.     BLDeficiency = persistence.define('BLDeficiency', {
  643.         RemoteID: "INT",
  644.         Description: "TEXT",
  645.         Source: "TEXT",
  646.         Status: "TEXT",
  647.         ChargeBack: "TEXT",
  648.         Saved: "BOOL",
  649.     });
  650.     BLDeficiency.hasOne("BLRoom", BLRoom);
  651.     BLDeficiency.hasOne("BLDeficiencyType", BLDeficiencyType);
  652.     BLDeficiency.hasOne("BLUnit", BLUnit);
  653.     BLDeficiency.hasOne("BLProject", BLProject);
  654.     BLDeficiency.hasOne("BLSupplierDepartment", BLSupplierDepartment);
  655.     BLDeficiency.hasOne("BLSupplierDepartmentChargeBack", BLSupplierDepartment);
  656.     //PROVA CAMERA *****************************************************************************
  657.     //BLDeficiency.hasMany("BLPics",BLPics);
  658.  
  659.     BLUnit.hasMany("BLDeficiencies", BLDeficiency, "BLUnit");
  660.  
  661.  
  662.  
  663.  
  664.  
  665.     console.log("populateDB start");
  666.     if (resetSchema) {
  667.         persistenceReset();
  668.     }
  669.  
  670.  
  671.     if (dropAllData) {
  672.         BLDeficiency.all().list(function (objects) {
  673.             objects.forEach(function (object) {
  674.                 persistence.remove(object);
  675.             });
  676.             console.log("Deleted all BLDeficiency");
  677.         });
  678.  
  679.         BLDeficiencyType.all().list(function (objects) {
  680.             objects.forEach(function (object) {
  681.                 persistence.remove(object);
  682.             });
  683.             console.log("Deleted all BLDeficiencyType");
  684.         });
  685.  
  686.         /*BLDeficiencyTypeDescription.all().list(function (objects) {
  687.             objects.forEach(function (object) {
  688.                 persistence.remove(object);
  689.             });
  690.             console.log("Deleted all BLDeficiencyTypeDescription");
  691.         });*/
  692.  
  693.         BLFormTemplate.all().list(function (objects) {
  694.             objects.forEach(function (object) {
  695.                 persistence.remove(object);
  696.             });
  697.             console.log("Deleted all BLFormTemplate");
  698.         });
  699.  
  700.         BLRoom.all().list(function (objects) {
  701.             objects.forEach(function (object) {
  702.                 persistence.remove(object);
  703.             });
  704.             console.log("Deleted all BLRoom");
  705.         });
  706.  
  707.         BLSupplierDepartment.all().list(function (objects) {
  708.             objects.forEach(function (object) {
  709.                 persistence.remove(object);
  710.             });
  711.             console.log("Deleted all BLSupplierDepartment");
  712.         });
  713.  
  714.         BLUnit.all().list(function (objects) {
  715.             objects.forEach(function (object) {
  716.                 persistence.remove(object);
  717.             });
  718.             console.log("Deleted all BLUnit");
  719.         });
  720.  
  721.         BLUser.all().list(function (objects) {
  722.             objects.forEach(function (object) {
  723.                 persistence.remove(object);
  724.             });
  725.             console.log("Deleted all BLUser");
  726.         });
  727.  
  728.         BLProject.all().list(function (objects) {
  729.             objects.forEach(function (object) {
  730.                 persistence.remove(object);
  731.             });
  732.             console.log("Deleted all BLProject");
  733.         });
  734.  
  735.         //PROVA CAMERA *****************************************************************************
  736.         /*BLPics.all().list(function (objects) {
  737.             objects.forEach(function (object) {
  738.                 persistence.remove(object);
  739.             });
  740.             console.log("Deleted all BLPics");
  741.         });*/
  742.     }
  743.  
  744.             persistence.schemaSync(function() {
  745.                 console.log("schema sync done");
  746.  
  747.  
  748.  
  749.                 if (populateDatabase) {
  750.                     databasePopulateDB();
  751.                 }
  752.  
  753.         });
  754. }
  755.  
  756. function databasePopulateDB() {
  757.  
  758.         var BLProject1 = new BLProject({RemoteID: 703273, Name: "Northshore1", CompanyName: "Fram Building Group", Plan: "2030-33"});
  759.         var BLProject2 = new BLProject({RemoteID: 123456, Name: "West Village 2B", CompanyName: "Kylemore Communities", Plan: "2030-33"});
  760.  
  761.         var BLUnit201 = createBLUnit(BLProject1, 1, "Suite 201", "2012/03/05");
  762.         var BLUnit202 = createBLUnit(BLProject1, 2, "Suite 202", "2012/03/07");
  763.         var BLUnit203 = createBLUnit(BLProject1, 3, "Suite 203", "2012/03/08");
  764.         var BLUnit302 = createBLUnit(BLProject1, 4, "Suite 301", "2012/03/09");
  765.         var BLUnit303 = createBLUnit(BLProject1, 5, "Suite 302", "2012/03/02");
  766.  
  767.         var BLLot1 = createBLUnit(BLProject2, 5, "Lot 1", "2012/03/05");
  768.         var BLLot2 = createBLUnit(BLProject2, 6, "Lot 2", "2012/03/04");
  769.         var BLLot3 = createBLUnit(BLProject2, 7, "Lot 3", "2012/03/03");
  770.         var BLLot4 = createBLUnit(BLProject2, 8, "Lot 4", "2012/03/02");
  771.         var BLLot5 = createBLUnit(BLProject2, 9, "Lot 5", "2012/03/01");
  772.  
  773.         createBLUser(BLProject1, BLUnit201, 1, "John1", "Smith1", "416-425-2925", "416-425-4233", "alex@builderlynx.com", "201 Donlea Drive", "Toronto", "ON", "M4G 2M4");
  774.         createBLUser(BLProject1, BLUnit202, 2, "John2", "Smith2", "416-425-2925", "416-425-4233", "alex@builderlynx.com", "202 Donlea Drive", "Toronto", "ON", "M4G 2M4");
  775.         createBLUser(BLProject1, BLUnit203, 3, "John3", "Smith3", "416-425-2925", "416-425-4233", "alex@builderlynx.com", "203 Donlea Drive", "Toronto", "ON", "M4G 2M4");
  776.         createBLUser(BLProject1, BLUnit302, 4, "John4", "Smith4", "416-425-2925", "416-425-4233", "alex@builderlynx.com", "302 Donlea Drive", "Toronto", "ON", "M4G 2M4");
  777.         createBLUser(BLProject1, BLUnit303, 5, "John5", "Smith5", "416-425-2925", "416-425-4233", "alex@builderlynx.com", "303 Donlea Drive", "Toronto", "ON", "M4G 2M4");
  778.  
  779.         createBLUser(BLProject2, BLLot1, 6, "Dave1", "Smith1", "416-425-2925", "416-425-4233", "alex@builderlynx.com", "1 Donlea Drive", "Toronto", "ON", "M4G 2M4");
  780.         createBLUser(BLProject2, BLLot2, 7, "Dave2", "Smith2", "416-425-2925", "416-425-4233", "alex@builderlynx.com", "2 Donlea Drive", "Toronto", "ON", "M4G 2M4");
  781.         createBLUser(BLProject2, BLLot3, 8, "Dave3", "Smith3", "416-425-2925", "416-425-4233", "alex@builderlynx.com", "3 Donlea Drive", "Toronto", "ON", "M4G 2M4");
  782.         createBLUser(BLProject2, BLLot4, 9, "Dave4", "Smith4", "416-425-2925", "416-425-4233", "alex@builderlynx.com", "4 Donlea Drive", "Toronto", "ON", "M4G 2M4");
  783.         createBLUser(BLProject2, BLLot5, 10, "Dave5", "Smith5", "416-425-2925", "416-425-4233", "alex@builderlynx.com", "5 Donlea Drive", "Toronto", "ON", "M4G 2M4");
  784.  
  785.         var p1S1 = createBLSupplierDepartment(BLProject1, 1, "Elec Contractors1", "Jeff Martino");
  786.         var p1S2 = createBLSupplierDepartment(BLProject1, 2, "Flooring Contractors2", "Jeff Martino");
  787.         var p1S3 = createBLSupplierDepartment(BLProject1, 3, "Plumbing Contractors3", "Jeff Martino");
  788.         var p1S4 = createBLSupplierDepartment(BLProject1, 4, "Paint Contractors4", "Jeff Martino");
  789.         var p1S5 = createBLSupplierDepartment(BLProject1, 5, "HVAC Contractors5", "Jeff Martino");
  790.         var p1S6 = createBLSupplierDepartment(BLProject1, 6, "Drywall Contractors6", "Jeff Martino");
  791.  
  792.         createBLSupplierDepartment(BLProject2, 7, "Elec Contractors1", "Jeff Martino");
  793.         createBLSupplierDepartment(BLProject2, 8, "Tile and Hardwood Contractors2", "Jeff Martino");
  794.         createBLSupplierDepartment(BLProject2, 9, "Plumbing Contractors3", "Jeff Martino");
  795.         createBLSupplierDepartment(BLProject2, 10, "Paint Contractors4", "Jeff Martino");
  796.         createBLSupplierDepartment(BLProject2, 11, "HVAC Contractors5", "Jeff Martino");
  797.         createBLSupplierDepartment(BLProject2, 12, "Drywall Contractors6", "Jeff Martino");
  798.  
  799.         var p1Foyer = createBLRoom(BLProject1, 1, "Foyer");
  800.         var p1Dinig = createBLRoom(BLProject1, 2, "Dining");
  801.         var p1Living = createBLRoom(BLProject1, 3, "Living");
  802.         var p1Stairs = createBLRoom(BLProject1, 4, "Stairs");
  803.         var p1MasterBedroom = createBLRoom(BLProject1, 5, "Master Bedroom");
  804.         var p1Bedroom2 = createBLRoom(BLProject1, 6, "Bedroom 2");
  805.         var p1Bedroom3 = createBLRoom(BLProject1, 7, "Bedroom 3");
  806.         var p1MainBathroom = createBLRoom(BLProject1, 8, "Main Bathroom");
  807.         var p1EnsuiteBathroom = createBLRoom(BLProject1, 9, "Ensuite Bathroom");
  808.  
  809.         var p1Other = createBLDeficiencyType(BLProject1, 1, "Other", null);
  810.         var p1Electrical = createBLDeficiencyType(BLProject1, 2, "Electrical", p1S1);
  811.         var p1Flooring = createBLDeficiencyType(BLProject1, 3, "Flooring", p1S2);
  812.         var p1Tile = createBLDeficiencyType(BLProject1, 4, "Tile", p1S2);
  813.         var p1Hardwood = createBLDeficiencyType(BLProject1, 5, "Hardwood", p1S2);
  814.         var p1Carpet = createBLDeficiencyType(BLProject1, 6, "Carpet", p1S2);
  815.         var p1Plumbing = createBLDeficiencyType(BLProject1, 7, "Plumbing", p1S3);
  816.         var p1Paint = createBLDeficiencyType(BLProject1, 8, "Paint", p1S4);
  817.         var p1HVAC = createBLDeficiencyType(BLProject1, 9, "HVAC", p1S5);
  818.         var p1Drywall = createBLDeficiencyType(BLProject1, 10, "Drywall", p1S6);
  819.  
  820.         createBLDeficiencyType(BLProject2, 11, "Other", -1);
  821.         createBLDeficiencyType(BLProject2, 12, "Electrical", -1);
  822.         createBLDeficiencyType(BLProject2, 13, "Flooring", -1);
  823.         createBLDeficiencyType(BLProject2, 14, "Tile", -1);
  824.         createBLDeficiencyType(BLProject2, 15, "Hardwood", -1);
  825.         createBLDeficiencyType(BLProject2, 16, "Carpet", -1);
  826.         createBLDeficiencyType(BLProject2, 17, "Plumbing", -1);
  827.         createBLDeficiencyType(BLProject2, 18, "Paint", -1);
  828.         createBLDeficiencyType(BLProject2, 19, "HVAC", -1);
  829.         createBLDeficiencyType(BLProject2, 20, "Drywall", -1);
  830.  
  831.         createBLDeficiency(BLUnit201, p1Foyer, p1HVAC, "Fix something1", "PDI", "New", p1S1);
  832.         createBLDeficiency(BLUnit202, p1Bedroom2, p1Electrical, "Broken Outlet", "Purchaser", "New", p1S2);
  833.         createBLDeficiency(BLUnit201, p1Bedroom2, p1Tile, "Fix somethingafdfad", "Conciliation", "Finished", p1S2);
  834.         createBLDeficiency(BLUnit201, p1Living, p1Hardwood, "Fix somethingbxvbxvbx", "Seasonal", "Deferred", p1S2);
  835.         createBLDeficiency(BLUnit201, p1Living, p1HVAC, "Fix somethingyutuytutyu", "Construction", "New", p1S3);
  836.         createBLDeficiency(BLUnit201, p1Stairs, p1Electrical, "Fix somethingklhklhjkl", "Inspection", "Sending", p1S1);
  837.         createBLDeficiency(BLUnit201, p1MainBathroom, p1Plumbing, "Fix somethingmbnvmnmv", "PDI", "New", p1S5);
  838.  
  839.         createBLFormTemplate(BLProject1, "1", "PDI Report", "Description of some kind", "PDI REPORT\n\nProject: #Project.Name.99#\nUser: #User.Name1.99# #User.Name2.99# #User.Name3.99# #User.Name4.99#\nUnit: #Unit.Name.99##Unit.Name.99##Unit.Name.99##System.Date# Some more text\nClosingDate: #Unit.Buyer Closing Date.99#\nEnd \nUnit: #Unit.Name.99# of PDI Report\nUnit: #Unit.Name.99#\nProject: #User.Name1.99# #User.Name2.99# #User.Name3.99# #User.Name4.99#\n\n");
  840.  
  841.         persistence.flush(function(err) {
  842.             console.log("Done Flushing!");
  843.             persistence.dump(null, [BLProject], function(dump) {
  844.                 console.log("DUMP START1");
  845.                 console.log(dump);
  846.                 console.log("DUMP DONE1");
  847.             });
  848.  
  849.  
  850. //              createEventHandlers();
  851.  
  852.             //setupHomePageProjects();
  853.  
  854. //              testFillReport();
  855.  
  856.         });
  857.  
  858.  
  859. }
  860.  
  861. function createBLUnit(blProject, remoteID, name, buyerClosingDate, municipalAddress, city, tarionEnrollmentNumber) {
  862.     var newUnit = new BLUnit({RemoteID: remoteID, Name: name, BuyerClosingDate: buyerClosingDate, MunicipalAddress: municipalAddress, City: city, TarionEnrollmentNumber: tarionEnrollmentNumber});
  863.     blProject.BLUnits.add(newUnit);
  864.     persistence.add(newUnit);
  865.     return newUnit;
  866. }
  867.  
  868. function createBLUser(blProject, blUnit, remoteID, name1, name2, phone1, phone2, email, street, city, province, postalCode) {
  869.     if (remoteID == 685438) {
  870.         console.log(remoteID);
  871.     }
  872.     var newUser = new BLUser({RemoteID: remoteID, Name1: name1, Name2: name2, Phone1: phone1, Phone2: phone2, Email: email, Street: street, City: city, Province: province, PostalCode: postalCode});
  873.     if (blUnit != null) {
  874.         blUnit.BLUser = newUser;
  875.         newUser.BLUnit = blUnit;
  876.     }
  877.     newUser.BLProject = blProject;
  878.     persistence.add(newUser);
  879.     return newUser;
  880. }
  881.  
  882. function createBLRoom(blProject, remoteID, name) {
  883.     var newRoom = new BLRoom({RemoteID: remoteID, Name: name});
  884.     blProject.BLRooms.add(newRoom);
  885.     persistence.add(newRoom);
  886.     return newRoom;
  887. }
  888.  
  889. function createBLDeficiencyType(blProject, remoteID, name, supplierDepartment) {
  890.     var newDefType = new BLDeficiencyType({RemoteID: remoteID, Name: name, BLDefaultSupplierDepartment: supplierDepartment});
  891.     blProject.BLDeficiencyTypes.add(newDefType);
  892.     newDefType.BLSupplierDepartment = supplierDepartment;
  893.     persistence.add(newDefType);
  894.  
  895.     /*for (i = 1; i < 10; i ++) {
  896. //          createBLDeficiencyTypeDescription(blProject, newDefType, remoteID * 10, "Description " + i + name);
  897.     }
  898.     return newDefType;*/
  899. }
  900.  
  901. /*function createBLDeficiencyTypeDescription(blProject, blDeficiencyType, remoteID, description) {
  902.     var newDefTypeDesc = new BLDeficiencyTypeDescription({RemoteID: remoteID, Description: description});
  903.     blDeficiencyType.BLDeficiencyTypeDescriptions.add(newDefTypeDesc);
  904.     persistence.add(newDefTypeDesc);
  905.     return newDefTypeDesc;
  906. }*/
  907.  
  908. //PROVA CAMERA *********************************************************************************
  909. /*function createBLPics(blProject, remoteID) {
  910.     var newPics = new BLPics({RemoteID: remoteID, Pics: pics });
  911.     blPics.BLPics.add(newPics);
  912.     persistence.add(newPics);
  913.     return newPics;
  914. }*/
  915.  
  916. function createBLSupplierDepartment(blProject, remoteID, companyName, contactName) {
  917.     var newSD = new BLSupplierDepartment({RemoteID: remoteID, CompanyName: companyName, ContactName: contactName});
  918.     blProject.BLSupplierDepartments.add(newSD);
  919.     persistence.add(newSD);
  920.     return newSD;
  921. }
  922.  
  923. function createBLFormTemplate(blProject, remoteID, title, description, text) {
  924.     var newFT = new BLFormTemplate({RemoteID: remoteID, Title: title, Description: description, Text: text});
  925.     blProject.BLFormTemplates.add(newFT);
  926.     persistence.add(newFT);
  927.     return newFT;
  928. }
  929.  
  930. //blPics ALLA FINE DA CANCELLARE SE NON FUNZIONA, AGGIUNGERE blPics ALLA FINE DELLA PRIMA RIGA QUANDO DI PROVA
  931. function createBLDeficiency(blUnit, blRoom, blDeficiencyType, description, source, status, blSupplierDepartment) {
  932.     var newDeficiency = new BLDeficiency({Description: description, Source: source, Status: status, Saved: true});
  933.     newDeficiency.BLUnit = blUnit;
  934.     newDeficiency.BLProject = blUnit.BLProject;
  935.     newDeficiency.BLRoom = blRoom;
  936.     newDeficiency.BLDeficiencyType = blDeficiencyType;
  937.     newDeficiency.BLSupplierDepartment = blSupplierDepartment;
  938.     //NEXT LINE DA ELIMINARE SE NON VA
  939.     //newDeficiency.BLPics = blPics
  940.  
  941.     persistence.add(newDeficiency);
  942.     return newDeficiency;
  943. }
  944.  
  945.  
  946.  
  947. function logDatabaseStatus() {
  948.     console.log("***DATABASE STATUS***");
  949.     console.log("DatabaseName: " + SQLDatabaseName);
  950.     console.log("SQLErrors   : " + SQLErrors);
  951.     console.log("***DATABASE STATUS***");
  952. }
  953.  
  954.  
  955. function setupHomePageProjects() {
  956.     $('#PageHomeListProject').empty();
  957.     BLProject.all().list(function (projects) {
  958.         projects.forEach(function (project) {
  959.             $('#PageHomeListProject').append($('<li/>', {
  960.                 'data-theme': "a"}).append($('<a/>', {
  961.                     'href': 'index.html#PageProject',
  962.                     'data-transition': 'slide',
  963.                     'class': 'projectButton',
  964.                     'projectID': project.id,
  965.                     'text': project.Name
  966.             })));
  967.         });
  968.         $("#PageHomeListProject").listview('refresh');
  969.         console.log(BLProject);
  970.     });
  971. }
  972.  
  973.  
  974.  
  975. function setupProjectPage(projectID) {
  976.         BLProject.load(projectID, function(project) {
  977.  
  978.             // If different project, then blank out list first
  979.             if ($("#PageProjectProjectName").text() != project.Name) {
  980.                 $("#PageProjectProjectName").html(project.Name);
  981.  
  982.                 document.BLProject = project;
  983.  
  984.                 console.log("BLProject.BLUser: " + BLProject.BLUser);
  985.  
  986.                 var projects = BLProject.all().filter("id", '=', project.id).prefetch("BLUser");
  987.                 projects.list(null, function(results, err) {
  988.                     if (results) {
  989.                         var blp = results[0];
  990.                         var blu = blp.BLUser;
  991.                         if (blu != null) {
  992.                             $("#PageProjectUserInfo").html(blu.Name1 + " " + blu.Name2);
  993.                         }
  994.                     }
  995.                 });
  996.  
  997. //                      BLUser.load(BLProject.BLUser, function(blUser) {
  998. //                          if (blUser != null) {
  999. //                              $("#PageProjectUserInfo").html(blUser.Name1 + " " + blUser.Name2);
  1000. //                          }
  1001. //                      });
  1002.                 $('#PageProjectListUnit').empty();
  1003.                 var units = BLUnit.all().filter("BLProject", '=', projectID);
  1004.                 units.list(null, function(results, err) {
  1005.                     if (results) {
  1006.                         for (i = 0; i < results.length; i ++) {
  1007.                             unit = results[i];
  1008.                             $('#PageProjectListUnit').append($('<li/>', {
  1009.                                 'data-theme': "a"}).append($('<a/>', {
  1010.                                     'href': 'index.html#PageUnit',
  1011.                                     'class': 'unitButton',
  1012.                                     'data-transition': 'slide',
  1013.                                     'unitID' : unit.id,
  1014.                                     'text': unit.Name
  1015.                             })));
  1016.                             console.log(unit.Name);
  1017.                         }
  1018.                         $("#PageProjectListUnit").listview('refresh');
  1019.                     } else {
  1020.                         console.log("no units");
  1021.                     }
  1022.                 });
  1023.             }
  1024.         });
  1025. }
  1026.  
  1027.  
  1028.  
  1029.  
  1030. function setupUnitPage(unitID) {
  1031.         console.log("Parameter unitID=" + unitID);
  1032.  
  1033.         BLUnit.load(unitID, function(unit) {
  1034.  
  1035.             document.BLUnit = unit;
  1036.  
  1037.             if ($("#PageUnitUnitName").text() != unit.Name) {
  1038.  
  1039.                 $("#PageUnitUnitName").html(unit.Name);
  1040. //                      $("#PageUnitUnitName2").html(unit.Name);
  1041.                 $("#PageUnitUnitBuyerClosingDate").html(unit.BuyerClosingDate != null ? unit.BuyerClosingDate : "N/A");
  1042.                 $("#PageUnitUnitPurchaseDate").html(unit.PurchaseDate != null ? unit.PurchaseDate : "N/A");
  1043.                 $("#PageUnitUnitOccupancyDate").html(unit.OccupancyDate != null ? unit.OccupancyDate : "N/A");
  1044.                 $("#PageUnitUnitMunicipalAddress").html(unit.MunicipalAddress != null ? unit.MunicipalAddress : "N/A");
  1045.                 $("#PageUnitUnitCity").html(unit.City != null ? unit.City : "N/A");
  1046.                 $("#PageUnitUnitModel").html(unit.Model != null ? unit.Model : "N/A");
  1047.                 $("#PageUnitUnitCode").html(unit.Code != null ? unit.Code : "N/A");
  1048.                 $("#PageUnitUnitTarion").html(unit.Tarion != null ? unit.Tarion : "N/A");
  1049.  
  1050.                 BLUser.findBy("BLUnit", unit.id, function(purchaser) {
  1051.                     if (purchaser) {
  1052.                         $("#PageUnitPurchaserName").text(purchaser.Name1 + " " + purchaser.Name2 + ", " + purchaser.Name3 + " " + purchaser.Name4);
  1053.                         $("#PageUnitPurchaserPhone1").html(purchaser.Phone1 != null ? purchaser.Phone1 : "N/A");
  1054.                         $("#PageUnitPurchaserPhone2").html(purchaser.Phone2 != null ? purchaser.Phone2 : "N/A");
  1055.                         $("#PageUnitPurchaserEmail").html(purchaser.Email != null ? purchaser.Email : "N/A");
  1056.                         $("#PageUnitPurchaserStreet").html(purchaser.Street != null ? purchaser.Street : "N/A");
  1057.                         $("#PageUnitPurchaserCity").html(purchaser.City != null ? purchaser.City : "N/A");
  1058.                         $("#PageUnitPurchaserProvince").html(purchaser.Province != null ? purchaser.Province : "N/A");
  1059.                         $("#PageUnitPurchaserPostalCode").html(purchaser.PostalCode != null ? purchaser.PostalCode : "N/A");
  1060.                     }
  1061.                 });
  1062.  
  1063.                 $('#PageUnitGridDeficiencies').empty();
  1064.                 var defs = BLDeficiency.all().filter("BLUnit", '=', unit.id).prefetch("BLRoom").prefetch("BLDeficiencyType");
  1065.                 defs.list(null, function(results, err) {
  1066.                     if (results) {
  1067.                         defsTable = $('#PageUnitGridDeficiencies');
  1068.                         defsTable.append($('<thead/>')).append(
  1069.                                                  $('<tr/>', {'class': 'blBold'}).append(
  1070.                                                  $('<td/>', {'class': 'blBold'}).text('View')
  1071.                                                , $('<td/>', {'class': 'blBold'}).text('Room')
  1072.                                                , $('<td/>', {'class': 'blBold'}).text('Type')
  1073.                                                , $('<td/>', {'class': 'blBold'}).text('Description')
  1074.                                                , $('<td/>', {'class': 'blBold'}).text('Source')
  1075.                                                , $('<td/>', {'class': 'blBold'}).text('Status')
  1076.                                                , $('<td/>', {'class': 'blBold'}).text('Supplier')
  1077.                                                 ));
  1078.                         for (i = 0; i < results.length; i ++) {
  1079.                             def = results[i];
  1080.                             pageUnitGridDeficienciesDeficiencyAppend(def, i);
  1081.                         }
  1082.                     } else {
  1083.                         console.log("no defs");
  1084.                     }
  1085.                     $('#PageUnitButtonAddDeficiency').attr('href', "index.html#PageModifyDeficiency").attr('class', 'addDeficiencyButton').attr('unitID', unit.id);
  1086. //                          $('#PageUnitGridDeficiencies').append($('<div/>', {'class': "grid_12"}).append($('<a/>', {
  1087. //                              'href': 'index.html#PageModifyDeficiency?unitID=' + unit.id,
  1088. //                              'id': 'PageUnitButtonAddDeficiency',
  1089. //                              'data-transition': 'slide',
  1090. //                              'text': 'Add Deficiency'
  1091. //                          })));
  1092.                     $("#PageUnitButtonAddDeficiency").trigger("create");
  1093.                 });
  1094.  
  1095.             }
  1096.         });
  1097.  
  1098. }
  1099.  
  1100.  
  1101. function createEventHandlers() {
  1102.     console.log("createEventHandlers");
  1103.  
  1104.     // Setup for jqm.page.params.js plugin
  1105.     $(document).bind("pagebeforechange", function( event, data ) {
  1106.         $.mobile.pageData = (data && data.options && data.options.pageData) ? data.options.pageData : null;
  1107.     });
  1108.  
  1109.     $( document ).bind( "mobileinit", function() {
  1110.         // Make your jQuery Mobile framework configuration changes here!
  1111.         $.support.cors = true;
  1112.         $.mobile.allowCrossDomainPages = true;
  1113.     });
  1114.  
  1115.     $(document).on("vclick", ".projectButton", function() {
  1116.         setupProjectPage($(this).attr("projectID"));
  1117.     });
  1118.  
  1119.  
  1120.     $(document).on("vclick", ".unitButton", function() {
  1121.         setupUnitPage($(this).attr("unitID"));
  1122.     });
  1123.  
  1124.  
  1125.     $(document).on("vclick", ".addDeficiencyButton", function() {
  1126.     //          setupDeficiencyPage($(this).attr("unitID"));
  1127.         pageModifyDeficiencyActivate($(this).attr("unitID"), null);
  1128.     });
  1129.  
  1130.  
  1131.  
  1132.  
  1133.     $("#PageProjectSync").on("pageshow", function(e, data){
  1134.         console.log("1111PageSync.Project=" + document.BLProject);
  1135.         if (document.BLProject != null) {
  1136.             console.log("PageSync.Project=" + document.BLProject);
  1137.  
  1138.             console.log("PageSync.ProjectName=" + document.BLProject.Name);
  1139.  
  1140.             $("#PageProjectSyncProjectName").html(document.BLProject.Name);
  1141.             $("#PageProjectSyncDomain").val(document.BLProject.Domain);
  1142.  
  1143.             var defsToSync = BLDeficiency.all().filter("RemoteID", '=', "0").filter("BLProject", '=', document.BLProject.id).prefetch("BLRoom").prefetch("BLDeficiencyType");
  1144.             defsToSync.list(null, function(results, err) {
  1145.                 if (results) {
  1146.                     var objects = "Deficiencies: " + results.length;
  1147.                     $("#PageProjectSyncObjectCountText").val(objects);
  1148.                 }
  1149.             });
  1150.  
  1151.             var projects = BLProject.all().filter("id", '=', document.BLProject.id).prefetch("BLUser");
  1152.             projects.list(null, function(results, err) {
  1153.                 if (results) {
  1154.                     var blp = results[0];
  1155.                     var blu = blp.BLUser;
  1156.                     if (blu != null) {
  1157.                         $("#PageProjectSyncUsername").val(blu.Username);
  1158.                         $("#PageProjectSyncPassword").val(blu.Password);
  1159.                     }
  1160.                 }
  1161.             });
  1162.  
  1163.         }
  1164.     });
  1165.  
  1166.     $("#PageUnit").on("pageshow", function(e, data){
  1167.  
  1168.  
  1169.     });
  1170.  
  1171.  
  1172.     $("#PageModifyDeficiency").on("pageshow", function(e, data){
  1173.         if ($.mobile.pageData && $.mobile.pageData.unitID){
  1174.             console.log("Parameter unitID=" + $.mobile.pageData.unitID);
  1175.             console.log("Parameter unitID=" + $.mobile.pageData.deficiencyID);
  1176.  
  1177.             pageModifyDeficiencyActivate($.mobile.pageData.unitID, $.mobile.pageData.deficiencyID);
  1178.         }
  1179.     });
  1180.  
  1181.         $(document).delegate(".ui-page","pagebeforehide", function(evt, ui){
  1182.         //      alert('pagebeforehide fired');
  1183.         });
  1184.  
  1185.  
  1186.         $("index.html#PageModifyDeficiency").on("pagecontainerbeforechange", function(e, data){
  1187.             var deficiency = document.BLDeficiency;
  1188.             if (deficiency != null) {
  1189.                 if ( ! deficiency.Saved) {
  1190.                     persistence.remove(deficiency);
  1191.                     persistence.flush();
  1192.                 }
  1193.             }
  1194.         });
  1195.  
  1196. }
  1197.  
  1198.     var blankCellValue = "<div>&nbsp;</div>";
  1199.  
  1200.     function pageUnitGridDeficienciesDeficiencyAppend (deficiency, row) {
  1201.         defsTable = $('#PageUnitGridDeficiencies tbody');
  1202.  
  1203.         defsTable.append($('<tr>', {'class': 'blTR'}).append(
  1204.                           $('<td/>', {'class': 'blTD'}).append($('<a/>', {'class': 'button',
  1205.                                                                     'href': 'index.html#PageModifyDeficiency?deficiencyID=' + deficiency.id + '&unitID=' + deficiency.BLUnit.id,
  1206.                                                                     'data-transition': 'slide', 'data-role': 'link', 'name': 'PageModifyDeficiencyLink',
  1207.                                                                     'text': 'View'
  1208.                                                                     }))
  1209.                         , $('<td/>', {'class': 'blTD', 'id': "Deficiency_" + deficiency.id + "_Room"}).html(deficiency.BLRoom != null ? deficiency.BLRoom.Name : blankCellValue)
  1210.                         , $('<td/>', {'class': 'blTD', 'id': "Deficiency_" + deficiency.id + "_DeficiencyType"}).html(deficiency.BLDeficiencyType != null ? deficiency.BLDeficiencyType.Name : blankCellValue)
  1211.                         , $('<td/>', {'class': 'blTD', 'id': "Deficiency_" + deficiency.id + "_Description"}).html(deficiency.Description)
  1212.                         , $('<td/>', {'class': 'blTD', 'id': "Deficiency_" + deficiency.id + "_Source"}).html(deficiency.Source)
  1213.                         , $('<td/>', {'class': 'blTD', 'id': "Deficiency_" + deficiency.id + "_Status"}).html(deficiency.Status)
  1214.                         , $('<td/>', {'class': 'blTD', 'id': "Deficiency_" + deficiency.id + "_SupplierDepartment"}).html(deficiency.BLSupplierDepartment != null ? deficiency.BLSupplierDepartment.CompanyName : blankCellValue)
  1215.                         //DA ELIMINARE SE NON VANNO LE IMMAGINI ************************************************************************************************************************************************************************
  1216.                         //, $('<td/>', {'class': 'blTD', 'id': "Deficiency_" + deficiency.id + "_Pics"}).html(deficiency.Pics)
  1217.                         )).trigger('create');
  1218.     }
  1219.  
  1220.     function pageUnitGridDeficienciesDeficiencyUpdate (deficiency) {
  1221.         $('#Deficiency_' + deficiency.id + "_Room").html(deficiency.BLRoom != null ? deficiency.BLRoom.Name : blankCellValue);
  1222.         $('#Deficiency_' + deficiency.id + "_DeficiencyType").html(deficiency.BLDeficiencyType != null ? deficiency.BLDeficiencyType.Name : blankCellValue);
  1223.         $('#Deficiency_' + deficiency.id + "_Description").html(deficiency.Description);
  1224.         $('#Deficiency_' + deficiency.id + "_Source").html(deficiency.Source);
  1225.         $('#Deficiency_' + deficiency.id + "_Status").html(deficiency.Status);
  1226.         $('#Deficiency_' + deficiency.id + "_SupplierDepartment").html(deficiency.BLSupplierDepartment != null ? deficiency.BLSupplierDepartment.CompanyName : blankCellValue);
  1227.         //DA ELIMINARE SE NON VANNO LE IMMAGINI ************************************************************************************************************************************************************************
  1228.         //$('#Deficiency_' + deficiency.id + "_Pics").html(deficiency.Pics);
  1229.     }
  1230.  
  1231.  
  1232.  
  1233.     var DeficiencySource = null;
  1234.     var DeficiencyStatus = null;
  1235.  
  1236.     function pageModifyDeficiencyActivate(unitID, deficiencyID) {
  1237.         BLUnit.load(unitID, function(unit) {
  1238.             var deficiency = null;
  1239.             if (deficiencyID == null) {
  1240.                 deficiency = new BLDeficiency({BLUnit: unitID, BLProject: unit.BLProject, Saved: false});
  1241.                 if (document.DeficiencySource != null) {
  1242.                     deficiency.Source = document.DeficiencySource;
  1243.                 }
  1244.                 if (document.DeficiencyStatus != null) {
  1245.                     deficiency.Status = document.DeficiencyStatus;
  1246.                 }
  1247.                 pageModifyDeficiencySetup(unit, deficiency);
  1248.             } else {
  1249.                 BLDeficiency.load(deficiencyID, function(deficiency) {
  1250.                     pageModifyDeficiencySetup(unit, deficiency);
  1251.                 });
  1252.             }
  1253.         });
  1254.     }
  1255.  
  1256.     function pageModifyDeficiencySetup(unit, deficiency) {
  1257.         // If different unit, then blank out list first
  1258.         if (deficiency._new) {
  1259.             $("#PageModifyDeficiencyUnitName").html(unit.Name + " Add Deficiency");
  1260.             pageDeficiencyBlankForm();
  1261.         } else {
  1262.             $("#PageModifyDeficiencyUnitName").html(unit.Name + " Modify Deficiency");
  1263.         }
  1264.         $("#PageModifyDeficiencyUnitName").attr('persistenceID', unit.id);
  1265.  
  1266.         document.BLDeficiency = deficiency;
  1267.  
  1268.         $('#DeficiencyRoom').empty();
  1269.         addSelectOption("#DeficiencyRoom", "", "", deficiency.BLRoom == null ? "" : deficiency.BLRoom.id);
  1270.         var rooms = BLRoom.all().filter("BLProject", '=', unit.BLProject).order("Name", true);
  1271.         rooms.list(null, function(results, err) {
  1272.             if (results) {
  1273.                 for (var i = 0; i < results.length; i ++) {
  1274.                     room = results[i];
  1275.                     addSelectOption("#DeficiencyRoom", room.id, room.Name, deficiency.BLRoom == null ? "" : deficiency.BLRoom.id);
  1276.                 }
  1277.                 $("#DeficiencyRoom").selectmenu("refresh", true);
  1278.             } else {
  1279.                 console.log("no rooms");
  1280.             }
  1281.         });
  1282.  
  1283.         $('#DeficiencyType').empty();
  1284.         addSelectOption("#DeficiencyType", "", "", deficiency.BLDeficiencyType == null ? "" : deficiency.BLDeficiencyType.id);
  1285.         var defTypes = BLDeficiencyType.all().filter("BLProject", '=', unit.BLProject).order("Name", true);
  1286.         defTypes.list(null, function(results, err) {
  1287.             if (results) {
  1288.                 for (var i = 0; i < results.length; i ++) {
  1289.                     defType = results[i];
  1290.                     addSelectOption("#DeficiencyType", defType.id, defType.Name, deficiency.BLDeficiencyType == null ? "" : deficiency.BLDeficiencyType.id);
  1291.                 }
  1292.                 $("#DeficiencyType").selectmenu("refresh", true);
  1293.             } else {
  1294.                 console.log("no def types");
  1295.             }
  1296.         });
  1297.  
  1298.         $('#DeficiencyDescription').val(deficiency.Description);
  1299.         //$('#DeficiencyDescription').trigger("create");
  1300.         $('#DeficiencySource').val(deficiency.Source).attr('selected', true).siblings('option').removeAttr('selected');
  1301.         $('#DeficiencySource').selectmenu("refresh", true);
  1302.         $('#DeficiencyStatus').val(deficiency.Status).attr('selected', true).siblings('option').removeAttr('selected');
  1303.         $('#DeficiencyStatus').selectmenu("refresh", true);
  1304.  
  1305.  
  1306.         if ("True" == deficiency.ChargeBack) {
  1307.             $('#DeficiencyChargeBackYes').attr('checked', true).checkboxradio("refresh");
  1308.             $('#DeficiencyChargeBackNo').removeAttr('checked').checkboxradio("refresh"); ;
  1309.         } else {
  1310.             $('#DeficiencyChargeBackYes').removeAttr('checked').checkboxradio("refresh"); ;
  1311.             $('#DeficiencyChargeBackNo').attr('checked', true).checkboxradio("refresh"); ;
  1312.         }
  1313.  
  1314.         /*$('#DeficiencySupplier').empty();
  1315.         $('#DeficiencySupplierChargeBack').empty();
  1316.         addSelectOption("#DeficiencySupplier", "", "", deficiency.BLSupplierDepartment == null ? "" : deficiency.BLSupplierDepartment.id);
  1317.         addSelectOption("#DeficiencySupplierChargeBack", "", "", deficiency.BLSupplierDepartmentChargeBack == null ? "" : deficiency.BLSupplierDepartmentChargeBack.id);
  1318.         var supplierDepartments = BLSupplierDepartment.all().filter("BLProject", '=', unit.BLProject);
  1319.         supplierDepartments.list(null, function(results, err) {
  1320.             if (results) {
  1321.                 for (i = 0; i < results.length; i ++) {
  1322.                     supplierDepartment = results[i];
  1323.                     addSelectOption("#DeficiencySupplier", supplierDepartment.id, supplierDepartment.CompanyName + " " + supplierDepartment.ContactName, deficiency.BLSupplierDepartment == null ? "" : deficiency.BLSupplierDepartment.id);
  1324.                     addSelectOption("#DeficiencySupplierChargeBack", supplierDepartment.id, supplierDepartment.CompanyName + " " + supplierDepartment.ContactName, deficiency.BLSupplierDepartmentChargeBack == null ? "" : deficiency.BLSupplierDepartmentChargeBack.id);
  1325.                 }
  1326.                 $("#DeficiencySupplier").selectmenu("refresh", true);
  1327.                 $("#DeficiencySupplierChargeBack").selectmenu("refresh", true);
  1328.             } else {
  1329.                 console.log("no def types");
  1330.             }
  1331.         });*/
  1332.  
  1333.         //PROVAAAAAAAA
  1334.  
  1335.         $('#DeficiencySupplier').empty();
  1336.         addSelectOption("#DeficiencySupplier", "", "", deficiency.BLSupplierDepartment == null ? "" : deficiency.BLSupplierDepartment.id);
  1337.         var supplierDepartments = BLSupplierDepartment.all().filter("BLProject", '=', unit.BLProject).order("CompanyName", true);
  1338.         supplierDepartments.list(null, function(results, err) {
  1339.             if (results) {
  1340.                 for (i = 0; i < results.length; i ++) {
  1341.                     supplierDepartment = results[i];
  1342.                     addSelectOption("#DeficiencySupplier", supplierDepartment.id, supplierDepartment.CompanyName + " " + supplierDepartment.ContactName, deficiency.BLSupplierDepartment == null ? "" : deficiency.BLSupplierDepartment.id);
  1343.                 }
  1344.                 $("#DeficiencySupplier").selectmenu("refresh", true);
  1345.                 } else {
  1346.                 console.log("no def types");
  1347.             }
  1348.         });
  1349.  
  1350.         $('#DeficiencySupplierChargeBack').empty();
  1351.         addSelectOption("#DeficiencySupplierChargeBack", "", "", deficiency.BLSupplierDepartmentChargeBack == null ? "" : deficiency.BLSupplierDepartmentChargeBack.id);
  1352.         var supplierDepartmentsChargeBack = BLSupplierDepartment.all().filter("BLProject", '=', unit.BLProject).order("CompanyName", true);
  1353.         supplierDepartments.list(null, function(results, err) {
  1354.             if (results) {
  1355.                 for (i = 0; i < results.length; i ++) {
  1356.                     supplierDepartment = results[i];
  1357.                     addSelectOption("#DeficiencySupplierChargeBack", supplierDepartment.id, supplierDepartment.CompanyName + " " + supplierDepartment.ContactName, deficiency.BLSupplierDepartmentChargeBack == null ? "" : deficiency.BLSupplierDepartmentChargeBack.id);
  1358.                 }
  1359.                 $("#DeficiencySupplierChargeBack").selectmenu("refresh", true);
  1360.                 } else {
  1361.                 console.log("no def types");
  1362.             }
  1363.         });
  1364.  
  1365.  
  1366.  
  1367.         //CAMERA O UNO O L'ALTRO, DA PROVARE ENTRAMBI*******************************************
  1368.         $("#ShowImageGallery").prop('src', deficiency.BLPic);
  1369.  
  1370.         //END CAMERA ***************************************************************************
  1371.  
  1372.         //pageDeficiencyBlankForm();
  1373.     }
  1374.  
  1375.     function pageDeficiencyBlankForm() {
  1376.     //  $('#DeficiencyRoom').val("");
  1377.     //  $('#DeficiencyType').empty();
  1378.     //  $('#DeficiencyDescription').empty();
  1379.     //  $('#DeficiencyTypeDescription').empty();
  1380.     //  $('#DeficiencySupplier').empty();
  1381.     //  $('#DeficiencySupplierChargeBack').empty();
  1382.     //  $('#DeficiencySupplier').append($('<option/>', {
  1383.     //  $('#DeficiencySupplierChargeBack').append($('<option/>', {
  1384.     $('#ShowImageTaken').prop('src','');
  1385.     $('#ShowImageGallery').prop('src','');
  1386.  
  1387.     }
  1388.  
  1389.     function addSelectOption(elementID, value, text, valueToSelect) {
  1390.         $(elementID).append($('<option/>', {
  1391.         'value': value,
  1392.         'text': text}));
  1393.  
  1394.         if (valueToSelect == null) {
  1395.             valueToSelect = "";
  1396.         }
  1397.  
  1398. //      if (elementID == "#DeficiencyType") {
  1399. //          console.log(elementID + " '" + value + "' '" + text + "' =test: '" + valueToSelect + "' comp: " + (value == valueToSelect) );
  1400. //      }
  1401.  
  1402. //      if (value == valueToSelect) {
  1403. //          console.log("matched: " + elementID);
  1404. //      }
  1405.  
  1406.         if (value == "") {
  1407.             $(elementID).val(value).attr('data-placeholder', "true");
  1408.         }
  1409.         if (value == valueToSelect) {
  1410. //          console.log("*****" + elementID + ": " + value + " = " + valueToSelect);
  1411.             $(elementID).val(value).attr('selected', true).siblings('option').removeAttr('selected');
  1412.         }
  1413.     }
  1414.  
  1415.  
  1416.     $('#DeficiencyType').click(function(e) {
  1417.         //$('#DeficiencyTypeDescription').empty();
  1418.         BLDeficiencyType.load($('#DeficiencyType').val(), function(deficiencyType) {
  1419.  
  1420.             if (deficiencyType.BLSupplierDepartment != null) {
  1421.                 $('#DeficiencySupplier').val(deficiencyType.BLSupplierDepartment.id).attr('selected', true).siblings('option').removeAttr('selected');
  1422.             } else {
  1423.                 $('#DeficiencySupplier').val("").attr('selected', true).siblings('option').removeAttr('selected');
  1424.             }
  1425.             $("#DeficiencySupplier").selectmenu("refresh", true);
  1426.  
  1427.             //var defTypeDescs = BLDeficiencyTypeDescription.all().filter("BLDeficiencyType", '=', deficiencyType.id);
  1428.             defTypeDescs.list(null, function(results, err) {
  1429.                 if (results) {
  1430.                     for (i = 0; i < results.length; i ++) {
  1431.                         defTypeDesc = results[i];
  1432.                         console.log(defTypeDesc.id);
  1433.                         console.log(defTypeDesc.Description);
  1434.                         /*$('#DeficiencyTypeDescription').append($('<option/>', {
  1435.                             'value': defTypeDesc.id,
  1436.                             'text': defTypeDesc.Description
  1437.                         }));*/
  1438.                     }
  1439.                     //$("#DeficiencyTypeDescription").selectmenu("refresh", true);
  1440.                 } else {
  1441.                     console.log("no def type descs");
  1442.                 }
  1443.             });
  1444.         });
  1445.     });
  1446.  
  1447.     /*$('#DeficiencyTypeDescription').click(function(e) {
  1448.         BLDeficiencyTypeDescription.load($('#DeficiencyTypeDescription').val(), function(deficiencyTypeDescription) {
  1449.             $('#DeficiencyDescription').append(" " + deficiencyTypeDescription.Description);
  1450.         });
  1451.     });*/
  1452.  
  1453.     $('#DeficiencyChargeBackYes').click(function(e) {
  1454.         $('#DeficiencySupplierChargeBack').val("");
  1455.         $('#DeficiencySupplierChargeBack').removeAttr("disabled");
  1456.     });
  1457.  
  1458.     $('#DeficiencyChargeBackNo').click(function(e) {
  1459.         $('#DeficiencySupplierChargeBack').val("");
  1460.         $('#DeficiencySupplierChargeBack').attr("disabled");
  1461.     });
  1462.  
  1463.     //PROVA CAMERA *****************************************************************************
  1464.     /*$('#DeficiencyPics').click(function(e) {
  1465.         $('#largeImage').val("");
  1466.         $('#largeImage').append(" " + deficiencyTypeDescription.Pics);
  1467.     });*/
  1468.  
  1469.     $('#PageModifyDeficiencyButtonSave').click(function(e) {
  1470.         var defUnit = $("#PageModifyDeficiencyUnitName").attr('persistenceID');
  1471.         BLUnit.load(defUnit, function(unit) {
  1472.  
  1473.             var defProject = unit.BLProject;
  1474.             var defRoom = $('#DeficiencyRoom').val();
  1475.             var defType = $('#DeficiencyType').val();
  1476.             var defDesc = $('#DeficiencyDescription').val();
  1477.             var defSource = $('#DeficiencySource').val();
  1478.             var defStatus = $('#DeficiencyStatus').val();
  1479.             var defSupplier = $('#DeficiencySupplier').val();
  1480.             var defChargeBack = $('input[name*=DeficiencyChargeBack]:checked').val();
  1481.             var defSupplierChargeBack = $('#DeficiencySupplierChargeBack').val();
  1482.             //DA ELIMINARE SE CAMERA E' DA TOGLIERE ********************************************
  1483.             var defPic = $('#ShowImageTaken').val();
  1484.  
  1485.  
  1486.  
  1487.             console.log("defProject: " + defProject);
  1488.             console.log("defUnit: " + defUnit);
  1489.             console.log("defRoom: " + defRoom);
  1490.             console.log("defType: " + defType);
  1491.             console.log("defDesc: " + defDesc);
  1492.             console.log("defSource: " + defSource);
  1493.             console.log("defStatus: " + defStatus);
  1494.             console.log("defSupplier: " + defSupplier);
  1495.             console.log("defChargeBack: " + defChargeBack);
  1496.             console.log("defSupplierChargeBack: " + defSupplierChargeBack);
  1497.             //DA ELIMINARE SE CAMERA E' DA TOGLIERE ********************************************
  1498.             //console.log("defPics: " + defPics);
  1499.  
  1500.             document.DeficiencySource = defSource;
  1501.             document.DeficiencyStatus = defStatus;
  1502.  
  1503.             var deficiency = document.BLDeficiency;
  1504.             if (deficiency != null) {
  1505.                 deficiency.BLProject = defProject;
  1506.                 deficiency.BLUnit = defUnit;
  1507.                 deficiency.BLRoom = defRoom;
  1508.                 deficiency.BLDeficiencyType = defType;
  1509.                 deficiency.Description = defDesc;
  1510.                 deficiency.Source = defSource;
  1511.                 deficiency.Status = defStatus;
  1512.                 deficiency.BLSupplierDepartment = defSupplier;
  1513.                 deficiency.BLSupplierDepartmentChargeBack = defSupplierChargeBack;
  1514.                 if (defChargeBack != null) {
  1515.                     deficiency.ChargeBack = defChargeBack;
  1516.                 }
  1517.                 //DA ELIMINARE SE CAMERA E' DA TOGLIERE ********************************************
  1518.                 deficiency.BLPic = defPic;
  1519.  
  1520.                 var saved = deficiency.Saved;
  1521.                 deficiency.Saved = true;
  1522.                 persistence.add(deficiency);
  1523.                 persistence.flush();
  1524.  
  1525.                 if ( ! saved) {
  1526.                     pageUnitGridDeficienciesDeficiencyAppend(deficiency);
  1527.                 } else {
  1528.                     pageUnitGridDeficienciesDeficiencyUpdate(deficiency);
  1529.                 }
  1530.             }
  1531.         });
  1532.  
  1533.     });
  1534.  
  1535.     $('#PageModifyDeficiencyButtonCancel').click(function(e) {
  1536.         var deficiency = document.BLDeficiency;
  1537.         if (deficiency != null) {
  1538.             if ( ! deficiency.Saved) {
  1539.                 persistence.remove(deficiency);
  1540.                 persistence.flush();
  1541.             }
  1542.         }
  1543. //          $.mobile.changePage("index.html#PageUnit", { transition: "slideup"} );
  1544.     });
  1545.  
  1546.  
  1547.  
  1548.     $("#SetupButton").click(function(e) {
  1549.         e.preventDefault();
  1550.         //alert("SetupButton is clicked");
  1551.         $.mobile.changePage("index.html#PageSetup", { transition: "slideup"} );
  1552.         return false;
  1553.     });
  1554.  
  1555.  
  1556.     $("#PageSetupDownloadProject").click(function (e) {
  1557.         e.preventDefault();
  1558.         domain = $("#PageSetupDomain").val();
  1559.         username = $("#PageSetupUsername").val();
  1560.         password = $("#PageSetupPassword").val();
  1561.         details = $("#PageSetupDetails");
  1562.         details.append("Starting Download\n");
  1563.         details.append("Domain: " + domain + "\n");
  1564.         details.append("Username: " + username + "\n");
  1565.         details.append("Password: " + password + "\n");
  1566.         details.append("Calling Authentication\n");
  1567.  
  1568.         console.log(domain + ", " + username + ", " + password);
  1569.  
  1570.         $.getJSON("http://" + domain + "/cc/tablet/UserTestPassword.jsp", {UserName: username, Password: password}, function(data) {
  1571. //          alert(data.AuthenticationRequestResult);
  1572.             console.log(data);
  1573.             console.log(data.AuthenticationPassword);
  1574.             console.log(data.AuthenticationUsername);
  1575.             console.log(data.AuthenticationRequestResult);
  1576.             details.append("AuthenticationRequestResult: '" + data.AuthenticationRequestResult + "'\n");
  1577.             if ("Successful Login" == data.AuthenticationRequestResult) {
  1578.                 details.append("Get Project Info\n");
  1579.                 $.getJSON("http://" + domain + "/cc/tablet/GetProject.jsp", {UserName: username, Password: password}, function(data) {
  1580.                     try {
  1581.                         details.append("Got Project Info\n");
  1582.  
  1583. //                      alert("Name: " + data.Properties[3].Value);
  1584.                         var projectP = propertiesToObject(data.Properties);
  1585.                         details.append("ProjectName: " + projectP.Name + "'\n");
  1586.                         details.append("ProjectID: " + projectP.ID + "'\n");
  1587.  
  1588.                         var blProject = new BLProject({RemoteID: projectP.ID, Name: projectP.Name, Plan: projectP.Plan, CompanyName: projectP.CompanyName, TarionRegistrationNumber: projectP.TarionRegistrationNumber, Municipality: projectP.Municipality});
  1589.                         blProject.Domain = domain;
  1590.                         persistence.add(blProject);
  1591.  
  1592.                         persistence.flush(null, function(err) {
  1593.                             details.append("Storing Project\n");
  1594.  
  1595.                             console.log("Done Flushing!");
  1596.  
  1597.                             details.append("Updating Project List\n");
  1598.  
  1599.                             setupHomePageProjects();
  1600.  
  1601.                             details.append("Downloading Supplier Departments\n");
  1602.  
  1603.                             downloadProjectSupplierDepartments(blProject);
  1604.                         });
  1605.                     } catch (ex) {
  1606.                         alert(ex);
  1607.                     }
  1608.                 });
  1609.             }
  1610.         });
  1611.  
  1612.     });
  1613.  
  1614.  
  1615.     function propertiesToObject(properties) {
  1616.         var obj = new Object();
  1617.         for (i = 0; i < properties.length; i ++) {
  1618.             obj[properties[i].Name] = properties[i].Value;
  1619.         }
  1620. //      console.log(obj);
  1621.         return obj;
  1622.     }
  1623.  
  1624.     var BatchSize = 3;
  1625.  
  1626.  
  1627.     function downloadProjectSupplierDepartments(blProject) {
  1628.         alert("Downloading Supplier Departments (1/7)");
  1629.         details = $("#PageSetupDetails");
  1630.         details.append("SupplierDepartment Sending JSON Request\n");
  1631.         $.getJSON("http://" + domain + "/cc/tablet/GetSupplierDepartments.jsp", {}, function(data) {
  1632.             try {
  1633.                 details.append("SupplierDepartment Processing Response\n");
  1634.                 var supplierDepartments = data.SupplierDepartments;
  1635.                 details.append("Records: " + supplierDepartments.length + "\n");
  1636.  
  1637.                 processSupplierDepartments(blProject, supplierDepartments, 0);
  1638.  
  1639.             } catch (ex) {
  1640.                 alert(ex);
  1641.             }
  1642.         });
  1643.     }
  1644.  
  1645.     function processSupplierDepartments(blProject, supplierDepartments, startFrom) {
  1646.         var addedObjects = false;
  1647.         for (var i = startFrom; i < supplierDepartments.length && i < startFrom + BatchSize; i ++) {
  1648.  
  1649.             po = supplierDepartments[i];
  1650.             sdp = propertiesToObject(po.Properties);
  1651.             //console.log(sdp);
  1652.  
  1653.             blSupplierDepartment = createBLSupplierDepartment(blProject, sdp.ID, sdp.CompanyName, sdp.ContactName);
  1654.             blSupplierDepartment.Phone1 = sdp.OfficePhone;
  1655.             blSupplierDepartment.Phone1 = sdp.MobilePhone;
  1656.             blSupplierDepartment.Email = sdp.Email;
  1657.             if (i % 10 == 0) {
  1658.                 details.append("SupplierDepartment Record " + i + " of " + supplierDepartments.length + "\n");
  1659.             }
  1660.             addedObjects = true;
  1661.         }
  1662.         details.append("SupplierDepartment Done Creating Objects\n");
  1663.  
  1664.         if (addedObjects) {
  1665.             persistence.flush(null, function(err) {
  1666.                 if (err != null) {
  1667. //                  alert(err);
  1668.                 }
  1669.                 details.append("SupplierDepartment Done Flush\n");
  1670.                 console.log("Done SupplierDepartments Flushing!");
  1671.                 processSupplierDepartments(blProject, supplierDepartments, startFrom + BatchSize);
  1672.             });
  1673.         } else {
  1674.             //downloadProjectDeficiencyTypes(blProject);
  1675.             downloadProjectUnits(blProject);
  1676.         }
  1677.     }
  1678.  
  1679.     function downloadProjectDeficiencyTypes(blProject) {
  1680.         alert("Downloading Deficiency Types (3/7)");
  1681.         details = $("#PageSetupDetails");
  1682.         details.append("DeficiencyTypes Sending JSON Request\n");
  1683.         $.getJSON("http://" + domain + "/cc/tablet/GetDeficiencyTypes.jsp", {}, function(data) {
  1684.             try {
  1685.                 details.append("DeficiencyTypes Processing Response\n");
  1686.                 var defTypes = data.DeficiencyTypes;
  1687.                 details.append("Records: " + defTypes.length + "\n");
  1688.  
  1689.                 $("#PageSetupSliderRecords").attr("value", 0);
  1690.                 $("#PageSetupSliderRecords").attr("max", defTypes.length);
  1691.  
  1692.                 for (var i = 0; i < defTypes.length; i ++) {
  1693.                     po = defTypes[i];
  1694.                     dtp = propertiesToObject(po.Properties);
  1695.  
  1696.                     sdid = dtp.SupplierDepartment;
  1697.                     if (sdid != "-1") {
  1698.                         ( function (dtp) {
  1699.                             var sds = BLSupplierDepartment.all().filter("RemoteID", '=', dtp.SupplierDepartment);
  1700.                             sds.list(null, function(results, err) {
  1701.                                 console.log("results: " + results.length);
  1702.                                 if (results && results.length > 0) {
  1703. //                                  alert("found Supplier Department");
  1704.                                     sd = results[0];
  1705.                                     var blDefType = createBLDeficiencyType(blProject, dtp.ID, dtp.Name, sd);
  1706.                                 }
  1707.                             });
  1708.                         })(dtp);
  1709.  
  1710.                     } else {
  1711.                         var blDefType = createBLDeficiencyType(blProject, dtp.ID, dtp.Name, null);
  1712.                     }
  1713.  
  1714.                     if (i % 10 == 0) {
  1715.                         details.append("DeficiencyType Record " + i + " of " + defTypes.length + "\n");
  1716.                     }
  1717.                 }
  1718.  
  1719. /*
  1720.                 var names = new Array();
  1721.                 var dtids = new Array();
  1722.                 for (var i = 0; i < defTypes.length; i ++) {
  1723.                     $("#PageSetupSliderRecords").attr("value", i);
  1724.                     $("#PageSetupSliderRecords").attr("val", i);
  1725.                     $("#PageSetupSliderRecords").slider("refresh", true);
  1726.                     $("#PageSetupSliderRecords").slider();
  1727.  
  1728.                     po = defTypes[i];
  1729.                     dtp = propertiesToObject(po.Properties);
  1730.  
  1731.                     sdid = dtp.SupplierDepartment;
  1732.                     if (sdid != "-1") {
  1733.                         var sds = BLSupplierDepartment.all().filter("RemoteID", '=', sdid);
  1734.                         names[i] = dtp.Name;
  1735.                         dtids[i] = dtp.ID;
  1736.                         // Not sure why this query always returns nothing
  1737.                         sds.list(null, function(results, err) {
  1738.                             console.log("results: " + results.length);
  1739.                             if (results && results.length > 0) {
  1740. //                              alert("found Supplier Department");
  1741.                                 sd = results[0];
  1742.                                 var blDefType = createBLDeficiencyType(blProject, dtids[i], names[i], sd);
  1743.                             }
  1744.                         });
  1745.                     } else {
  1746.                         var blDefType = createBLDeficiencyType(blProject, dtp.ID, dtp.Name, null);
  1747.                     }
  1748.  
  1749.                     if (i % 10 == 0) {
  1750.                         details.append("DeficiencyType Record " + i + " of " + defTypes.length + "\n");
  1751.                     }
  1752.                 }
  1753. */
  1754.                 details.append("Deficiency Types Done Creating Objects\n");
  1755.  
  1756.                 persistence.flush(null, function(err) {
  1757.                     details.append("DeficiencyTypes Done Flush\n");
  1758.                     console.log("Done DeficiencyTypes Flushing!");
  1759.                     downloadProjectRooms(blProject);
  1760.                 });
  1761.  
  1762.             } catch (ex) {
  1763.                 alert(ex);
  1764.             }
  1765.         });
  1766.     }
  1767.  
  1768.     function downloadProjectUnits(blProject) {
  1769.         alert("Downloading Units (2/7)");
  1770.         details = $("#PageSetupDetails");
  1771.         details.append("Units Sending JSON Request\n");
  1772.         $.getJSON("http://" + domain + "/cc/tablet/GetUnits.jsp", {}, function(data) {
  1773.             try {
  1774.                 details.append("Units Processing Response\n");
  1775.                 var units = data.Units;
  1776.                 details.append("Records: " + units.length + "\n");
  1777.  
  1778.                 $("#PageSetupSliderRecords").attr("value", 0);
  1779.                 $("#PageSetupSliderRecords").attr("max", units.length);
  1780.                 for (var i = 0; i < units.length; i ++) {
  1781.                     $("#PageSetupSliderRecords").attr("value", i);
  1782.                     $("#PageSetupSliderRecords").attr("val", i);
  1783.                     $("#PageSetupSliderRecords").slider("refresh", true);
  1784.                     $("#PageSetupSliderRecords").slider();
  1785.  
  1786.                     po = units[i];
  1787.                     up = propertiesToObject(po.Properties);
  1788.                     //console.log(sdp);
  1789.  
  1790.                     var blUnit = createBLUnit(blProject, up.ID, up.Name, up.BuyerClosingDate, up.MunicipalAddress, up.City, up.TarionEnrollmentNumber);
  1791.  
  1792.                     if (i % 10 == 0) {
  1793.                         details.append("Unit Record " + i + " of " + units.length + "\n");
  1794.                     }
  1795.                 }
  1796.                 details.append("Units Done Creating Objects\n");
  1797.  
  1798.                 persistence.flush(null, function(err) {
  1799.                     details.append("Units Done Flush\n");
  1800.                     console.log("Done Units Flushing!");
  1801.                     downloadProjectDeficiencyTypes(blProject);
  1802.                 });
  1803.  
  1804.             } catch (ex) {
  1805.                 alert(ex);
  1806.             }
  1807.         });
  1808.     }
  1809.  
  1810.  
  1811.     function downloadProjectRooms(blProject) {
  1812.         alert("Downloading Rooms (4/7)");
  1813.         details = $("#PageSetupDetails");
  1814.         details.append("Room Sending JSON Request\n");
  1815.         $.getJSON("http://" + domain + "/cc/tablet/GetRooms.jsp", {}, function(data) {
  1816.             try {
  1817.                 details.append("Room Processing Response\n");
  1818.                 var rooms = data.Rooms;
  1819.                 details.append("Records: " + rooms.length + "\n");
  1820.  
  1821.                 processRooms(blProject, rooms, 0);
  1822.  
  1823.             } catch (ex) {
  1824.                 alert(ex);
  1825.             }
  1826.         });
  1827.     }
  1828.  
  1829.     function processRooms(blProject, rooms, startFrom) {
  1830.         var addedObjects = false;
  1831.         for (var i = startFrom; i < rooms.length && i < startFrom + BatchSize; i ++) {
  1832.  
  1833.             po = rooms[i];
  1834.             sdp = propertiesToObject(po.Properties);
  1835.             //console.log(sdp);
  1836.  
  1837.             blRoom = createBLRoom(blProject, sdp.ID, sdp.Name);
  1838.             if (i % 10 == 0) {
  1839.                 details.append("Rooms Record " + i + " of " + rooms.length + "\n");
  1840.             }
  1841.             addedObjects = true;
  1842.         }
  1843.         details.append("Rooms Done Creating Objects\n");
  1844.  
  1845.         if (addedObjects) {
  1846.             persistence.flush(null, function(err) {
  1847.                 if (err != null) {
  1848. //                  alert(err);
  1849.                 }
  1850.                 details.append("Rooms Done Flush\n");
  1851.                 console.log("Done Rooms Flushing!");
  1852.                 processRooms(blProject, rooms, startFrom + BatchSize);
  1853.             });
  1854.         } else {
  1855.             downloadProjectUsers(blProject);
  1856.         }
  1857.     }
  1858.  
  1859.  
  1860.  
  1861.     function downloadProjectUsers(blProject) {
  1862.         alert("Downloading Users (5/7)");
  1863.         details = $("#PageSetupDetails");
  1864.         details.append("Users Sending JSON Request\n");
  1865.         $.getJSON("http://" + domain + "/cc/tablet/GetUsers.jsp", {}, function(data) {
  1866.             try {
  1867.                 details.append("Users Processing Response\n");
  1868.                 var users = data.Users;
  1869.                 details.append("Records: " + users.length + "\n");
  1870.  
  1871.                 processUsers(blProject, users, 0, 1);
  1872.  
  1873.             } catch (ex) {
  1874.                 alert(ex);
  1875.             }
  1876.         });
  1877.     }
  1878.  
  1879.     function processUsers(blProject, users, startFrom, batchSize) {
  1880.         var addedObjects = false;
  1881.  
  1882.         var username = $("#PageSetupUsername").val();
  1883.         var password = $("#PageSetupPassword").val();
  1884.  
  1885.         for (var i = startFrom; i < users.length && i < startFrom + batchSize; i ++) {
  1886.  
  1887.             po = users[i];
  1888.             sdp = propertiesToObject(po.Properties);
  1889.  
  1890.             var trid = sdp.TreeRootID;
  1891.             if (sdp.ID == 685438) {
  1892.                 console.log(trid);
  1893.             }
  1894.             var st = sdp.ID + " " + sdp.UserName;
  1895.             console.log(st);
  1896.             var sds = BLUnit.all().filter("RemoteID", '=', trid);
  1897.             // Not sure why this query always returns nothing
  1898.             sds.list(null, function(results, err) {
  1899.                 if (sdp.ID == 685438) {
  1900.                     console.log(trid);
  1901.                 }
  1902. //              console.log("results: " + results.length);
  1903.                 var unit = null;
  1904.                 if (results && results.length > 0) {
  1905. //                              alert("found Supplier Department");
  1906.                     unit = results[0];
  1907.                 }
  1908.                 var blUser = createBLUser(blProject, unit, sdp.ID, sdp.Name1, sdp.Name2, sdp.HomePhone, sdp.CellPhone, sdp.Email, sdp.StreetAddress, sdp.City, sdp.Province, sdp.PostalCode);
  1909.                 blUser.Name3 = sdp.Name3;
  1910.                 blUser.Name4 = sdp.Name4;
  1911.                 blUser.Username = sdp.UserName;
  1912.                 blUser.Password = sdp.Password;
  1913.  
  1914.                 if (username == blUser.Username) {
  1915.                     blProject.BLUser = blUser;
  1916.                 }
  1917.                 var st2 = blUser.RemoteID + " " + blUser.Username;
  1918.                 console.log(st2);
  1919.             });
  1920.  
  1921.  
  1922.             if (i % 10 == 0) {
  1923.                 details.append("Users Record " + i + " of " + users.length + "\n");
  1924.             }
  1925.             addedObjects = true;
  1926.         }
  1927.         details.append("Users Done Creating Objects\n");
  1928.  
  1929.         if (addedObjects) {
  1930.             persistence.flush(null, function(err) {
  1931.                 if (err != null) {
  1932. //                  alert(err);
  1933.                 }
  1934.                 details.append("Users Done Flush\n");
  1935.                 console.log("Done Users Flushing!");
  1936.                 processUsers(blProject, users, startFrom + batchSize, batchSize);
  1937.             });
  1938.         } else {
  1939.             //alert("All Done Downloading");
  1940.             downloadProjectFormTemplates(blProject);
  1941.         }
  1942.     }
  1943.  
  1944.  
  1945.     function downloadProjectFormTemplates(blProject) {
  1946.         alert("Downloading FormTemplates (6/7)");
  1947.         details = $("#PageSetupDetails");
  1948.         details.append("FormTemplates Sending JSON Request\n");
  1949.         $.getJSON("http://" + domain + "/cc/tablet/GetFormTemplates.jsp", {}, function(data) {
  1950.             try {
  1951.                 details.append("FormTemplates Processing Response\n");
  1952.                 var records = data.FormTemplates;
  1953.                 details.append("Records: " + records.length + "\n");
  1954.  
  1955.                 processFormTemplates(blProject, records, 0, 1);
  1956.  
  1957.             } catch (ex) {
  1958.                 alert(ex);
  1959.             }
  1960.         });
  1961.     }
  1962.  
  1963.     function processFormTemplates(blProject, records, startFrom, batchSize) {
  1964.         var addedObjects = false;
  1965.         for (var i = startFrom; i < records.length && i < startFrom + batchSize; i ++) {
  1966.  
  1967.             po = records[i];
  1968.             sdp = propertiesToObject(po.Properties);
  1969.  
  1970.             var blFormTemplate = createBLFormTemplate(blProject, sdp.ID, sdp.Title, sdp.Description, sdp.Text);
  1971.  
  1972.             if (i % 10 == 0) {
  1973.                 details.append("FormTemplates Record " + i + " of " + records.length + "\n");
  1974.             }
  1975.             addedObjects = true;
  1976.         }
  1977.         details.append("FormTemplates Done Creating Objects\n");
  1978.  
  1979.         if (addedObjects) {
  1980.             persistence.flush(null, function(err) {
  1981.                 if (err != null) {
  1982. //                  alert(err);
  1983.                 }
  1984.                 details.append("FormTemplates Done Flush\n");
  1985.                 console.log("Done FormTemplates Flushing!");
  1986.                 processFormTemplates(blProject, records, startFrom + batchSize, batchSize);
  1987.             });
  1988.         } else {
  1989.             alert("All Done Downloading (7/7)");
  1990.             //downloadProjectUnits(blProject);
  1991.         }
  1992.     }
  1993.  
  1994.  
  1995.  
  1996.  
  1997.  
  1998.  
  1999.  
  2000.  
  2001.  
  2002.  
  2003.  
  2004.  
  2005.  
  2006.  
  2007.  
  2008.  
  2009.  
  2010.  
  2011.  
  2012.  
  2013.  
  2014.  
  2015.  
  2016.  
  2017.  
  2018.  
  2019.  
  2020.  
  2021.  
  2022.  
  2023.     $("#PageProjectSyncProject").click(function (e) {
  2024.         e.preventDefault();
  2025.         domain = $("#PageProjectSyncDomain").val();
  2026.         username = $("#PageProjectSyncUsername").val();
  2027.         password = $("#PageProjectSyncPassword").val();
  2028.         details = $("#PageProjectSyncDetails");
  2029.  
  2030.         if ("" == domain) {
  2031.             alert("Domain can not be blank");
  2032.             return;
  2033.         }
  2034.         if ("" == username) {
  2035.             alert("Username can not be blank");
  2036.             return;
  2037.         }
  2038.         if ("" == password) {
  2039.             alert("Password can not be blank");
  2040.             return;
  2041.         }
  2042.  
  2043.         details.append("Starting Sync\n");
  2044.         details.append("Domain: " + domain + "\n");
  2045.         details.append("Username: " + username + "\n");
  2046.         details.append("Password: " + password + "\n");
  2047.         details.append("Calling Authentication\n");
  2048.  
  2049.         var hash = true;
  2050.         if (password.length != 32) {
  2051.             hash = false;
  2052.         }
  2053.  
  2054.         console.log(domain + ", " + username + ", " + password);
  2055.  
  2056.         $.post("http://" + domain + "/cc/tablet/UserTestPassword.jsp", {UserName: username, Password: password, Hash: hash}, function(data) {
  2057. //          alert(data.AuthenticationRequestResult);
  2058.             console.log(data);
  2059.             console.log(data.AuthenticationPassword);
  2060.             console.log(data.AuthenticationUsername);
  2061.             console.log(data.AuthenticationRequestResult);
  2062.             details.append("AuthenticationRequestResult: '" + data.AuthenticationRequestResult + "'\n");
  2063.             if ("Successful Login" == data.AuthenticationRequestResult) {
  2064.                 details.append("Sending Deficiencies\n");
  2065.  
  2066.                 var defsToSync = BLDeficiency.all().filter("RemoteID", '=', "0").filter("BLProject", '=', document.BLProject.id).prefetch("BLRoom").prefetch("BLDeficiencyType").prefetch("BLUnit").prefetch("BLSupplierDepartment");
  2067.                 defsToSync.list(null, function(results, err) {
  2068.                     if (results) {
  2069.                         $("#PageProjectSyncSliderRecords").attr("value", 0);
  2070.                         $("#PageProjectSyncSliderRecords").attr("max", results.length);
  2071.                         console.log("Def Count: " + results.length);
  2072.  
  2073.                         details.append("Deficiency Count: " + results.length + "\n");
  2074.  
  2075.                         var countDefs = results.length;
  2076.                         var countSent = 0;
  2077.                         var countResult = 0;
  2078.                         var countSuccess = 0;
  2079.                         var countError = 0;
  2080.  
  2081.                         for (var i = 0; i < results.length; i ++) {
  2082.                             var def = results[i];
  2083.                             details.append("Deficiency: " + i + " Sending\n");
  2084.  
  2085.                             if (def.BLDeficiencyType == null) {
  2086.                                 persistence.remove(def);
  2087.                             } else {
  2088.  
  2089.                                 $("#PageProjectSyncSliderRecords").attr("value", i);
  2090.                                 $("#PageProjectSyncSliderRecords").attr("val", i);
  2091.                                 $("#PageProjectSyncSliderRecords").slider("refresh", true);
  2092.                                 $("#PageProjectSyncSliderRecords").slider();
  2093.  
  2094.                                 var sdid = -1;
  2095.                                 if (def.BLSupplierDepartment != null) {
  2096.                                     sdid = def.BLSupplierDepartment.RemoteID;
  2097.                                 }
  2098.                                 countSent ++;
  2099.                                 $.getJSON("http://" + domain + "/cc/tablet/UploadDeficiency.jsp",
  2100.                                     {Description: def.Description,
  2101.                                      Source: def.Source,
  2102.                                      Status: def.Status,
  2103.                                      DeficiencyType: def.BLDeficiencyType.RemoteID,
  2104.                                      Room: def.BLRoom.RemoteID,
  2105.                                      Unit: def.BLUnit.RemoteID,
  2106.                                      SupplierDepartment: sdid},
  2107.                                 function(data) {
  2108.                                     try {
  2109.                                         countResult ++;
  2110.                                         console.log("Deficiency: " + i + " Result\n");
  2111.                                         details.append("Deficiency: " + i + " Result\n");
  2112.                                         var defRemoteID = data.Deficiency[0].ID;
  2113.                                         details.append("Deficiency: " + i + " defRemoteID:" + defRemoteID + "\n");
  2114.                                         console.log("Deficiency: " + i + " defRemoteID:" + defRemoteID + "\n");
  2115.                                         def.RemoteID = defRemoteID;
  2116.                                         persistence.add(def);
  2117.                                         persistence.flush();
  2118.                                         countSuccess ++;
  2119.                                         console.log("After Flush: Success:" + countSuccess);
  2120.  
  2121.                                         if (i = results.length) {
  2122.                                             alert("Sync Finished.  \n" +
  2123.                                                   "Count Objects: " + countDefs + "\n" +
  2124.                                                   "Count Sent   : " + countSent + "\n" +
  2125.                                                   "Count Result : " + countResult + "\n" +
  2126.                                                   "Count Success: " + countSuccess + "\n" +
  2127.                                                   "Count Error  : " + countError + "\n");
  2128.                                         }
  2129.                                     } catch (ex) {
  2130.                                         countError ++;
  2131.                                         console.log(ex.toString());
  2132.                                     }
  2133.                                 });
  2134.                             }
  2135.                         }
  2136.                     }
  2137.                 });
  2138.  
  2139.  
  2140.             }
  2141.         }, "json");
  2142.  
  2143.     });
  2144.  
  2145.  
  2146.  
  2147.  
  2148.  
  2149.  
  2150.  
  2151.  
  2152.  
  2153.  
  2154.  
  2155.  
  2156.  
  2157.  
  2158.     $("#PageSetupCreateSchema").click(function (e) {
  2159.         databaseCreateSchema(true, false, true);
  2160.     });
  2161.  
  2162.  
  2163.     $("#PageSetupSetupDemoProjects").click(function (e) {
  2164.         databaseCreateSchema(false, true, true);
  2165.     });
  2166.  
  2167.  
  2168.  
  2169.  
  2170.  
  2171.  
  2172.  
  2173.  
  2174.  
  2175.  
  2176.  
  2177.  
  2178. //********************************************
  2179. //Utils and testing functions
  2180. //********************************************
  2181.  
  2182.  
  2183. function syncTest() {
  2184.     console.log("Starting Sync Test");
  2185.     var sync = callWhenDone(function() { console.log("all jobs are done!"); });
  2186.     var endJob = function(){ console.log("one job ended"); sync(-1); };
  2187.     for (var i=0; i<10; ++i) {
  2188.         sync(+1);
  2189.         console.log("starting job: " + i);
  2190.         setTimeout(endJob, Math.random()*10000); // to replace with your async function
  2191.     }
  2192. }
  2193.  
  2194. /**
  2195.  * callWhenDone: a simple synchronized callback closure
  2196.  * @author adrienjoly
  2197.  */
  2198. var callWhenDone = function(callback) {
  2199.         var counter = 0;
  2200.         return function (incr) {
  2201.                 if (0 == (counter += incr))
  2202.                         callback();
  2203.         };
  2204. };
  2205.  
  2206. // example use:
  2207. //var sync = callWhenDone(function() { console.log("all jobs are done!"); });
  2208. //var endJob = function(){ console.log("one job ended"); sync(-1); };
  2209. //for (var i=0; i<10; ++i) {
  2210. //       sync(+1);
  2211. //        setTimeout(endJob, Math.random()*10000); // to replace with your async function
  2212. //}
  2213.  
  2214. function pSchemaSync() {
  2215.     var sync = callWhenDone(function() {
  2216.         console.log("done sync");
  2217.     });
  2218.     sync(+1);
  2219.     persistence.schemaSync(function(tx) {
  2220.         console.log("schema sync done");
  2221.         sync(-1);
  2222.     });
  2223.  
  2224. }
  2225.  
  2226. // Query the database
  2227. //
  2228. function queryDB(tx) {
  2229.     tx.executeSql('SELECT * FROM BLUnit', [], querySuccess, errorCB);
  2230. }
  2231.  
  2232. // Query the success callback
  2233. //
  2234. function querySuccess(tx, results) {
  2235.     var len = results.rows.length;
  2236.     console.log("DEMO table: " + len + " rows found.");
  2237.     for (var i=0; i<len; i++){
  2238.         console.log("Row = " + i + " BLID = " + results.rows.item(i).BLID + " Data =  " + results.rows.item(i).Name);
  2239.     }
  2240. }
  2241.  
  2242. // Transaction error callback
  2243. //
  2244. function errorCB(err) {
  2245.     SQLErrors ++;
  2246.     console.log("Error processing SQL: "+err.code + ": Message: " + err.message);
  2247. }
  2248.  
  2249. function nullCB() {
  2250.     SQLErrors ++;
  2251.     console.log("NullCallBack");
  2252. }
  2253.  
  2254. // Transaction success callback
  2255. //
  2256. function successCB() {
  2257.     if (SQLDatabase != null) {
  2258.         SQLDatabase.transaction(queryDB, errorCB);
  2259.     }
  2260.  
  2261.     logDatabaseStatus();
  2262. }
  2263.  
  2264.  
  2265.  
  2266.  
  2267.  
  2268. function getDatabaseObject(table, ID, jquerySelectorText) {
  2269.  
  2270.     SQLDatabase.transaction(
  2271.         function(transaction) {
  2272.             console.log("mess1: " + ID);
  2273.             transaction.executeSql(
  2274.                 'SELECT * FROM BLProject WHERE BLID = ?',
  2275.                 [parseInt(ID)],
  2276.                 function(transaction, result) {
  2277.                     console.log("inner result: " + result.rows.length);
  2278.                     if (result != null && result.rows != null) {
  2279.                         for (var i = 0; i < result.rows.length; i++) {
  2280.                             var row = result.rows.item(i);
  2281.                             $(jquerySelectorText).html(row.Name);
  2282.                         }
  2283.                     }
  2284.                 },
  2285.                 errorCB
  2286.             );
  2287.         },
  2288.         errorCB,
  2289.         nullCB
  2290.     );
  2291. }
  2292.  
  2293. function applyFunctionToDatabaseObject(table, ID, functionToApply) {
  2294.  
  2295.     SQLDatabase.transaction(
  2296.         function(transaction) {
  2297.             console.log("mess1: " + ID);
  2298.             transaction.executeSql(
  2299.                 'SELECT * FROM ' + table + ' WHERE BLID = ?',
  2300.                 [parseInt(ID)],
  2301.                 functionToApply,
  2302.                 errorCB
  2303.             );
  2304.         },
  2305.         errorCB,
  2306.         nullCB
  2307.     );
  2308. }
  2309.  
  2310.  
  2311. function applyFunctionToDatabaseResult(query, functionToApply) {
  2312.  
  2313.     SQLDatabase.transaction(
  2314.         function(transaction) {
  2315.             console.log("applyFunctionToDatabaseResult.query: " + query);
  2316.             transaction.executeSql(
  2317.                 query,
  2318.                 [],
  2319.                 functionToApply,
  2320.                 errorCB
  2321.             );
  2322.         },
  2323.         errorCB,
  2324.         nullCB
  2325.     );
  2326. }
  2327.  
  2328. function getDatabaseObjectSuccess(tx, results) {
  2329.     var len = results.rows.length;
  2330.     console.log("DEMO table: " + len + " rows found.");
  2331.     for (var i=0; i<len; i++){
  2332.         console.log("getDatabaseObject.Row = " + i + " ID = " + results.rows.item(i).ID + " Data =  " + results.rows.item(i).Name);
  2333.     }
  2334. }
  2335.  
  2336.  
  2337. function generatePDIReport(someText) {
  2338.     console.log("onDeviceReady***1");
  2339.  
  2340.     window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
  2341.         function(fileSystem) {
  2342.             console.log("gotFTinternalanon***2 someText: '" + someText + "'");
  2343.             fileSystem.root.getFile("readme.html", {create: true},
  2344.                 function (fileEntry) {
  2345.                     fileEntry.createWriter(
  2346.                         function (writer) {
  2347.                             gotFileWriter(writer, someText);
  2348.                         }, fail);
  2349.                 }, fail);
  2350.         }
  2351.         ,
  2352.         function (error) {
  2353.         });
  2354. }
  2355.  
  2356. function gotFS(fileSystem) {
  2357.     console.log("gotFT***2");
  2358.     fileSystem.root.getFile("readme.txt", {create: true}, gotFileEntry, fail);
  2359. }
  2360.  
  2361. function gotFileEntry(fileEntry) {
  2362.     console.log("gotFileEntry***2: " + fileEntry.fullURL());
  2363.     fileEntry.createWriter(gotFileWriter, fail);
  2364. }
  2365.  
  2366. function gotFileWriter(writer, someText) {
  2367.     console.log("gotFileWriter***3");
  2368.     writer.onwrite = function(evt) {
  2369.         console.log("write success***4");
  2370.     };
  2371.     writer.onwritestart = function(evt) {
  2372.         console.log("writestart***6");
  2373.     };
  2374.     writer.onabort = function(evt) {
  2375.         console.log("abort***7");
  2376.     };
  2377.     writer.onerror = function(evt) {
  2378.         console.log("error***8");
  2379.     };
  2380.     writer.onwriteend = function(evt) {
  2381.         console.log("writeend***9");
  2382.       //  navigator.app.loadUrl('file:///mnt/sdcard/readme.txt');
  2383.         window.plugins.childBrowser.showWebPage("file:///mnt/sdcard/readme.html", { showLocationBar: true });
  2384.         console.log("writeend***10");
  2385.     };
  2386.  
  2387.     writer.write("some sample text1234'" + someText + "'");
  2388.     // contents of file now 'some sample text'
  2389. //        writer.truncate(11);
  2390.     // contents of file now 'some sample'
  2391. //        writer.seek(4);
  2392.     // contents of file still 'some sample' but file pointer is after the 'e' in 'some'
  2393.     writer.write(" different text123");
  2394.     writer.write(someText);
  2395.     // contents of file now 'some different text'
  2396. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement