Advertisement
Fabbrogas

Untitled

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