Merge branch 'master' of ateliers.heureux-cyclage.org:burette/pos_membership
[burette/pos_membership.git] / static / src / js / db.js
diff --git a/static/src/js/db.js b/static/src/js/db.js
new file mode 100644 (file)
index 0000000..044e9be
--- /dev/null
@@ -0,0 +1,70 @@
+function openerp_pos_membership_db(instance, module){
+       module.PosLS = module.PosLS.extend({
+               init: function(options){
+                       //console.log("[pos_membership] [PosLS] [init]: options=", options, "this=", this);
+                       this._super(this, options);
+                       this.partner_search_string = '';
+                       this.partner_by_id = {};
+                       this.partner_list = [];
+                },
+               _partner_search_string: function(partner){
+                       var str = '' + partner.id + ':' + partner.name;
+                       return str + '\n';
+                },
+               add_partners: function(partners){
+                       if(!partners instanceof Array){
+                               partners = [partners];
+                        }
+                       //console.log("[pos_membership] [add_partners] :", partners);
+                       for(var i = 0, len = partners.length; i < len; i++){
+                               var partner = partners[i];
+                               //console.log("[db] [add_partners] partner.name:",partner.name);
+                               this.partner_by_id[partner.id] = partner;
+                               this.partner_list.push(partner);
+                               this.partner_search_string += this._partner_search_string(partner);
+                        }
+                       //console.log("[db] [add_partners] partner_search_string:", this.partner_search_string);
+                },
+               get_partner_by_id: function(id){
+                       return this.partner_by_id[id];
+                },
+               search_partner: function(query){
+                       var re = RegExp("([0-9]+):.*?"+query,"gi");
+                       var results = [];
+                       //console.log("[db] [search_partner] query:",query);
+                       for(var i = 0; i < this.limit; i++){
+                               r = re.exec(this.partner_search_string);
+                               if(r){
+                                       var id = Number(r[1]);
+                                       //console.log("[db] [search_partner] id:",id);
+                                       results.push(this.get_partner_by_id(id));
+                                }
+                               else{
+                                       break;
+                                }
+                        }
+                       return results;
+                },
+               get_partner_list: function(){
+                       return this.partner_list;
+                },
+               add_partner: function(partner){
+                       //console.log("[pos_membership] [PosLS] [add_partner] partner=", partner.name);
+                       var last_id = this.load('last_partner_id',0);
+                       var partners  = this.load('partners',[]);
+                       partners.push({id: last_id + 1, data: partner});
+                       this.save('last_partner_id',last_id+1);
+                       this.save('partners',partners);
+                },
+               remove_partner: function(partner_id){
+                       var partners = this.load('partners',[]);
+                       partners = _.filter(partners, function(partner){
+                               return partner.id !== partner_id;
+                        });
+                       this.save('partners',partners);
+                },
+               get_partners: function(){
+                       return this.load('partners',[]);
+                },
+        });
+ }