// Copyright (c) 2012 Web Notes Technologies Pvt Ltd (http://erpnext.com) // // MIT License (MIT) // // Permission is hereby granted, free of charge, to any person obtaining a // copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A // PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE // OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // // Local DB //----------- var locals = {'DocType':{}}; var LocalDB={}; var READ = 0; var WRITE = 1; var CREATE = 2; var SUBMIT = 3; var CANCEL = 4; var AMEND = 5; LocalDB.getchildren = function(child_dt, parent, parentfield, parenttype) { var l = []; for(var key in locals[child_dt]) { var d = locals[child_dt][key]; if((d.parent == parent)&&(d.parentfield == parentfield)) { if(parenttype) { if(d.parenttype==parenttype)l.push(d); } else { // ignore for now l.push(d); } } } l.sort(function(a,b){return (cint(a.idx)-cint(b.idx))}); return l; } // Add Doc // ====================================================================================== LocalDB.add=function(dt, dn) { if(!locals[dt]) locals[dt] = {}; if(locals[dt][dn]) delete locals[dt][dn]; locals[dt][dn] = {'name':dn, 'doctype':dt, 'docstatus':0}; return locals[dt][dn]; } // Delete Doc // ====================================================================================== LocalDB.delete_doc=function(dt, dn) { var doc = get_local(dt, dn); if(!doc) return; for(var ndt in locals) { // all doctypes if(locals[ndt]) { for(var ndn in locals[ndt]) { var doc = locals[ndt][ndn]; if(doc && doc.parenttype==dt && (doc.parent==dn||doc.__oldparent==dn)) { delete locals[ndt][ndn]; } } } } delete locals[dt][dn]; } function get_local(dt, dn) { return locals[dt] ? locals[dt][dn] : null; } // Sync Records from Server // ====================================================================================== LocalDB.sync = function(list) { if(keys(list._kl)) list = expand_doclist(list); if(list.length) { LocalDB.clear_locals(list[0].doctype, list[0].name); } else { return; } for(var i=0;i