<!doctype html>
<html ng-app="TestNgDexieAdmin" ng-strict-di>
<head>
<meta charset="utf-8">
<title>TestNgDexieAdmin</title>
<meta name="viewport" content="width=device-width">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome-animation/0.0.9/font-awesome-animation.min.css" integrity="sha256-2R+7KeULTBMjJBc++hTkb8cpDnnRxdbI9YGDZFOX1lM=" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jsoneditor/5.5.7/jsoneditor.min.css" integrity="sha256-1/q/VOVPBzmiCM4TNJzQTa1N+NdMR2X7uHd1HjAPIEk=" crossorigin="anonymous">
</head>
<!--[if lt IE 10]>
<p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
<![endif]-->
<ng-dexie-admin></ng-dexie-admin>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular-route.min.js" integrity="sha256-cSGSOcFF66XhVJmkBJLDSHDSYEd32PmWU4Wpc+0oRXk=" crossorigin="anonymous"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/2.1.3/ui-bootstrap-tpls.min.js"></script>
<script type="text/javascript" src="libs.js"> </script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chance/1.0.4/chance.min.js"></script> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jsoneditor/5.5.7/jsoneditor.min.js" integrity="sha256-0ahM/Y8/bysd7fTpVoMWy4Cqo6XCBgpcVIjPWFA3iXU=" crossorigin="anonymous"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/dexie/1.4.1/dexie.min.js" integrity="sha256-hMNnaoWi22zGaLNdOOdDa9wRAhvC4QcHpAteDI4LRIY=" crossorigin="anonymous"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jsoneditor/5.5.7/jsoneditor.min.js" integrity="sha256-0ahM/Y8/bysd7fTpVoMWy4Cqo6XCBgpcVIjPWFA3iXU=" crossorigin="anonymous"></script>
<script type="text/javascript" src="index.js"> </script>
</body>
</html>
var dbDatabase = new Dexie("DataBase");
dbDatabase.version(1).stores({
friends: "++id, name, age, isCloseFriend, contact.phone",
notes: "++id, title, date, *items",
noLoadAction: "++id"
});
var loadFirend = function() {
console.log(dbDatabase);
var friends = [];
for (var i = 0; i < 500; i++) {
friends.push({
name: chance.name(),
age: chance.age(),
gender: chance.gender(),
country: chance.country({
full: true
}),
contact: {
mail: {
prof: chance.email(),
private: chance.email()
},
phone: chance.phone()
},
contact2: {
mail: chance.email(),
phone: chance.phone()
},
contact3: {
mail: chance.email(),
phone: chance.phone()
}
});
}
return dbDatabase.friends.bulkPut(friends);
};
var loadNote = function() {
var notes = [];
for (var i = 0; i < 3; i++) {
notes.push({
title: 'note - ' + i
});
}
return dbDatabase.notes.bulkPut(notes);
};
angular.module('TestNgDexieAdmin', ['ui.bootstrap', 'ng.dexieadmin'])
.service('ngDexieAdminConfig', ngDexieAdminConfig);
function ngDexieAdminConfig() {
return {
onNewDb: function(db) {
if (db) dbDatabase = db;
},
getDb: function() {
return dbDatabase;
},
tablesConfig: function() {
return {
friends: {
columns: {
id: false,
time: false,
isCloseFriend: false,
'contact.mail.prof': true
},
order: 2,
noDelete: true,
load: function() {
return loadFirend();
}
},
notes: {
order: 1,
load: function() {
return loadNote();
}
}
};
}
};
}
//ngEditor
(function(){var module=angular.module("ng.jsoneditor",[]);module.constant("ngJsoneditorConfig",{});module.directive("ngJsoneditor",["ngJsoneditorConfig","$timeout",function(ngJsoneditorConfig,$timeout){var defaults=ngJsoneditorConfig||{};return{restrict:"A",require:"ngModel",scope:{options:"=",ngJsoneditor:"=",preferText:"="},link:function($scope,element,attrs,ngModel){var debounceTo,debounceFrom;var editor;var internalTrigger=false;if(!angular.isDefined(window.JSONEditor)){throw new Error("Please add the jsoneditor.js script first!")}function _createEditor(options){var settings=angular.extend({},defaults,options);var theOptions=angular.extend({},settings,{change:function(){if(typeof debounceTo!=="undefined"){$timeout.cancel(debounceTo)}debounceTo=$timeout(function(){if(editor){internalTrigger=true;var error=undefined;try{ngModel.$setViewValue($scope.preferText===true?editor.getText():editor.get());}catch(err){error=err;}if(settings&&settings.hasOwnProperty("change")){settings.change(error);}}},settings.timeout||100);}});element.html("");var instance=new JSONEditor(element[0],theOptions);if($scope.ngJsoneditor instanceof Function){$timeout(function(){$scope.ngJsoneditor(instance)})}return instance}$scope.$watch("options",function(newValue,oldValue){for(var k in newValue){if(newValue.hasOwnProperty(k)){var v=newValue[k];if(newValue[k]!==oldValue[k]){if(k==="mode"){editor.setMode(v)}else if(k==="name"){editor.setName(v)}else{editor=_createEditor(newValue);$scope.updateJsonEditor();return}}}}},true);$scope.$on("$destroy",function(){});$scope.updateJsonEditor=function(newValue){if(internalTrigger){internalTrigger=false;return;}if(typeof debounceFrom!=="undefined"){$timeout.cancel(debounceFrom)}debounceFrom=$timeout(function(){if($scope.preferText===true&&!angular.isObject(ngModel.$viewValue)){editor.setText(ngModel.$viewValue||"{}")}else{editor.set(ngModel.$viewValue||{})}},$scope.options.timeout||100)};editor=_createEditor($scope.options);if($scope.options.hasOwnProperty("expanded")){$timeout($scope.options.expanded?function(){editor.expandAll()}:function(){editor.collapseAll()},($scope.options.timeout||100)+100)}ngModel.$render=$scope.updateJsonEditor;$scope.$watch(function(){return ngModel.$modelValue},$scope.updateJsonEditor,true)}}}])})();
//ngDexieAdmin
!function e(t,n,a){function i(l,o){if(!n[l]){if(!t[l]){var s="function"==typeof require&&require;if(!o&&s)return s(l,!0);if(r)return r(l,!0);var c=new Error("Cannot find module '"+l+"'");throw c.code="MODULE_NOT_FOUND",c}var u=n[l]={exports:{}};t[l][0].call(u.exports,function(e){var n=t[l][1][e];return i(n?n:e)},u,u.exports,e,t,n,a)}return n[l].exports}for(var r="function"==typeof require&&require,l=0;l<a.length;l++)i(a[l]);return i}({1:[function(e,t,n){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();n.DbManagerController=function(){function e(t,n,i,r,l){"ngInject";var o=this;a(this,e),this.$timeout=r,this.$log=n,this.$scope=t,this.$uibModal=i,this.dbManager=l,this.tables=this.dbManager.getTables(),this.selectedTable=this.tables[0],this.selectedTableIndex=0,this.dbManager.onRefresh(function(){o.tables=o.dbManager.getTables(),o.displayData(o.selectedTableIndex)}),this.toDelete={}}return e.$inject=["$scope","$log","$uibModal","$timeout","dbManagerService"],i(e,[{key:"animate",value:function(e,t,n){var a=this;e.stopPropagation();var i=angular.element(e.target),r=i.find("i");r.length&&(i=r),i.addClass(t+" animated"),n.then(function(){return a.$timeout(function(){return i.removeClass(t+" animated")})})}},{key:"loadAll",value:function(e){this.animate(e,"fa-spin",this.dbManager.loadAll())}},{key:"load",value:function(e,t){this.animate(e,"fa-spin",this.dbManager.load(t))}},{key:"hasActionLoad",value:function(e){return this.dbManager.hasActionLoad(e)}},{key:"hasDelete",value:function(e){return this.dbManager.hasDelete(e)}},{key:"createDb",value:function(){return this.dbManager.createDb()}},{key:"reolveIdsToDelete",value:function(){var e=this,t=[];return this.toDelete&&Object.keys(this.toDelete).forEach(function(n){e.toDelete[n]&&t.push(1*n)}),t}},{key:"nbDataToDelete",value:function(){return this.reolveIdsToDelete().length}},{key:"deleteSelected",value:function(e){var t=this.reolveIdsToDelete();this.animate(e,"faa-flash",this.dbManager.delete(this.selectedTable,t))}},{key:"deleteAllDb",value:function(e){this.animate(e,"faa-flash",this.dbManager.deleteAllTable())}},{key:"delete",value:function(e,t){this.animate(e,"faa-flash",this.dbManager.delete(t))}},{key:"forceDelete",value:function(e,t){this.animate(e,"faa-flash",this.dbManager.delete(t))}},{key:"drop",value:function(e){this.animate(e,"faa-flash",this.dbManager.drop())}},{key:"dump",value:function(e){this.animate(e,"faa-flash",this.dbManager.dump())}},{key:"save",value:function(e,t){this.animate(e,"faa-flash",this.dbManager.dumpTable(t))}},{key:"search",value:function(e){var t=this;this.dbManager.search(e,this.selectedTable).then(function(e){t.dataTable=e,t.$scope.$digest()})}},{key:"checkAll",value:function(){var e=this;this.dataTable.forEach(function(t){return e.toDelete[t[e.dbManager.primaryKeyName(e.selectedTable)]]=e.checkAllForDelete})}},{key:"addOrRmoveToDelete",value:function(e,t){e.stopPropagation()}},{key:"displayData",value:function(e){var t=this;this.checkAllForDelete=!1,this.toDelete={},this.selectedTableIndex=e,this.selectedTable=this.tables[e],this.columns=this.dbManager.resolveColumns(this.selectedTable),this.dbManager.buildData(this.selectedTable).then(function(e){return t.dataTable=e}).then(function(){return t.$scope.$digest()})}},{key:"displayRow",value:function(e){var t=this,n=this;this.$log.log(e),this.$uibModal.open({controller:["$scope","json","$uibModalInstance","$timeout",function(e,a,i,r){delete a.$$hashKey,e.obj={data:a},e.editorLoaded=function(e){e.set(a),r(function(){e.expandAll()},150)},e.options={mode:"tree",modes:["tree","text"],history:!0},e.del=function(){t.dbManager.deleteObject(t.selectedTable,e.obj.data).then(function(){n.displayData(n.selectedTableIndex),i.close(e.obj.data)})},e.save=function(){n.selectedTable.put(e.obj.data).then(function(){n.displayData(n.selectedTableIndex),i.close(e.obj.data)})},e.cancel=function(){i.dismiss("cancel")}}],templateUrl:"displayJson.html",controllerAs:"jsonCtrl",size:"lg",resolve:{json:function(){return e}}})}}]),e}()},{}],2:[function(e,t,n){"use strict";function a(){"ngInject";var e={restrict:"E",template:'<style>\r\n\r\n</style><script type="text/ng-template" id="displayJson.html"><div class="modal-body"> <div ng-jsoneditor="editorLoaded" ng-model="obj.data" options="options" style="height: 80vh;"></div> </div> <div class="modal-footer"> <button class="btn btn-danger" type="button" ng-click="del()">Delete</button> <button class="btn btn-primary" type="button" ng-click="save()">Save</button> <button class="btn btn-warning" type="button" ng-click="cancel()">Cancel</button> </div></script><div class="row"><div class="col-xs-3"><div class="panel panel-default"><div class="panel-heading clearfix"><div class="btn-toolbar" role="toolbar"><div class="pull-left panel-title"><span class="badge">{{ dbManger.tables.length}}</span></div><div class="btn-group pull-right"><div ng-click="dbManger.dump($event)" class="btn btn-default" title="Dump"><i class="fa fa-floppy-o" aria-hidden="true"></i></div><div ng-click="dbManger.loadAll($event)" class="btn btn-default" title="Load all"><i class="fa fa-refresh" aria-hidden="true"></i></div><div ng-click="dbManger.deleteAllDb($event)" class="btn btn-default" title="Empty DB"><i class="fa fa-trash-o" aria-hidden="true"></i></div><div ng-click="dbManger.drop($event)" class="btn btn-danger" title="Drop"><i class="fa fa-trash-o" aria-hidden="true"></i></div></div></div></div><div class="list-group" ng-repeat="(index,table) in dbManger.tables track by table.name" ng-click="dbManger.displayData(index)"><div class="list-group-item" ng-class="dbManger.selectedTable.name===table.name ? \'active\':\'\'" style="cursor:pointer"><div class="list-group-item-heading clearfix"><div class="pull-left panel-title"><span class="badge">{{table.nbRow}}</span> <span class="panel-title" style="padding-top: 7.5px;">{{table.name}}</span></div><div class="btn-group pull-right"><div ng-if="dbManger.hasActionLoad(table)" ng-click="dbManger.load($event,table)" class="btn btn-default" title="Load table"><i class="fa fa-refresh" aria-hidden="true"></i></div><div ng-click="dbManger.save($event, table)" class="btn btn-default" title="Dump table"><i class="fa fa-floppy-o" fa-stack-1x aria-hidden="true"></i></div><div ng-if="dbManger.hasDelete(table)" ng-click="dbManger.delete($event, table)" class="btn btn-default" title="Clear table"><i class="fa fa-trash-o" fa-stack-1x aria-hidden="true"></i></div><div ng-if="!dbManger.hasDelete(table)" ng-click="dbManger.forceDelete($event, table)" class="btn btn-danger" title="Force clear table"><i class="fa fa-trash-o" fa-stack-1x aria-hidden="true"></i></div></div></div><p class="list-group-item-text"><i class="fa fa-key" aria-hidden="true"></i> {{table.schema.primKey.name}} : {{table.schema.primKey.auto}}</p><p class="list-group-item-text"></p>index: <span ng-repeat="indexe in table.schema.indexes">{{indexe.src}},</span><p></p></div></div></div></div><div class="col-xs-9"><div class="panel panel-default"><div class="panel-heading clearfix">{{dbManger.selectedTable.name}}<div class="btn-group pull-right"><div ng-style="dbManger.nbDataToDelete()?{opacity:100}:{opacity:0}" ng-click="dbManger.deleteSelected($event, table)" class="btn btn-default" title="Delete selected data">{{dbManger.nbDataToDelete()}} <i class="fa fa-trash-o" fa-stack-1x aria-hidden="true"></i></div></div></div><div class="panel-body"><form><div class="row"><div class="form-group col-xs-12"><div class="input-group input-group"><span class="input-group-addon"><i class="fa fa-search" aria-hidden="true"></i></span> <input type="text" class="form-control" ng-change="dbManger.search(dbManger.searchValue)" ng-model-options="{ debounce: 250 }" ng-model="dbManger.searchValue"> <span class="input-group-addon"><span class="badge">{{dbManger.dataTable.length}}</span></span></div></div></div></form><div style="height: 70vh !important;overflow-y: auto;"><table class="table table-striped table-condensed"><colgroup><col class="del"><col class="{{::dbManger.selectedTable.schema.primKey.name}}"><col ng-repeat="indexe in dbManger.selectedTable.schema.indexes" class="{{::indexe.name}}"></colgroup><thead><tr><th><input type="checkbox" name="del" ng-click="dbManger.checkAll()" ng-model="dbManger.checkAllForDelete"></th><th><i class="fa fa-key" aria-hidden="true"></i>PK</th><th ng-repeat="indexe in dbManger.columns">{{::indexe}}</th></tr></thead><tbody><tr ng-repeat="data in dbManger.dataTable | limitTo:150" ng-click="dbManger.displayRow(data)"><td><input type="checkbox" ng-click="$event.stopPropagation()" ng-model="dbManger.toDelete[data[dbManger.selectedTable.schema.primKey.name]]" name="del" d></td><td>{{data[dbManger.selectedTable.schema.primKey.name]}}</td><td ng-repeat="indexe in dbManger.columns">{{data[indexe]}}</td></tr></tbody></table></div></div></div></div></div>',controller:i.DbManagerController,controllerAs:"dbManger",bindToController:!0};return e}Object.defineProperty(n,"__esModule",{value:!0}),n.NgDexieAdminDirective=a;var i=e("./dbManager.controller")},{"./dbManager.controller":1}],3:[function(e,t,n){"use strict";var a=e("./service/dbManager.service"),i=e("./dbManager/ngDexieAdmin.directive");angular.module("ng.dexieadmin",["ui.bootstrap","ng.jsoneditor"]).service("dbManagerService",a.DbManagerService).directive("ngDexieAdmin",i.NgDexieAdminDirective)},{"./dbManager/ngDexieAdmin.directive":2,"./service/dbManager.service":5}],4:[function(e,t,n){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}(),r=function(){function e(){"ngInject";a(this,e),this.rn="\r\n"}return i(e,[{key:"config",value:function(e){e&&(this.db=e.db,this.dbName=this.db.name+"",this.tables=this.db.tables,this.tableDef=this.createTblesDef())}},{key:"dumpTable",value:function(e){var t=this;return e.toArray(function(n){var a=t.rn,i=JSON.stringify(n);return a+"//-"+e.name+a+" db."+e.name+".bulkPut("+i+")"})}},{key:"createTblesDef",value:function(){var e={};return this.db.tables.map(function(t){var n=[t.schema.primKey].concat(t.schema.indexes),a=n.map(function(e){return e.src}).join(",");e[t.name]=a}),e}},{key:"dump",value:function(){var e=this,t=this.db,n=this,a=this.rn,i=new Promise(function(i){t.open().then(function(){var e="var db = new Dexie('"+t.name+"') "+a+" db.version("+t.verno+").stores({ "+a,i=n.createTblesDef();return e+=Object.keys(i).map(function(e){var t=i[e];return" "+e+": '"+t+"'"}).join(","+a),""+a+e+"});"+a}).then(function(a){var r=t.tables.map(function(e){return n.dumpTable(e)});return Promise.all(r).then(function(t){i(a+"//#### Datas #####"+e.rn+t.join(";")+";")}),a}).finally(function(){})});return i}}]),e}();n.DbDump=r},{}],5:[function(e,t,n){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0}),n.DbManagerService=void 0;var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},r=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}(),l=e("./dbDump.service.js"),o=function(){function e(t){"ngInject";a(this,e),this.config(t),this.previsouSearch="",this.countTupleForEachTable()}return e.$inject=["ngDexieAdminConfig"],r(e,[{key:"config",value:function(e){this.config=e,this.db=e.getDb(),this.tables=this.orderTables(this.db.tables),this.dbDump=new l.DbDump,this.dbDump.config({db:this.db});var t=this.resolveConfigType("load");this.actionsLoad=t,this.context=e.context,this.onNewDb=e.onNewDb()}},{key:"getTables",value:function(){return this.tables}},{key:"orderTables",value:function(e){var t=this.resolveConfigType("order"),n=[];for(var a in t)n.push({name:a,order:t[a]});return n.sort(function(e,t){return t.order-e.order}),n.map(function(t){var n=e.findIndex(function(e){return e.name==t.name}),a=e.splice(n,1)[0];e.unshift(a)}),e}},{key:"columnsToDisplay",value:function(e){return this.resolveConfigType("columns")[e]}},{key:"resolveColumns",value:function(e){var t=this.columnsToDisplay(e.name);t||(t={}),e.schema.indexes.forEach(function(e){void 0===t[e.name]&&(t[e.name]=!0)});var n=[];return n=Object.keys(t).filter(function(e){var n=t[e];return n!==!1})}},{key:"buildData",value:function(e){var t=this.resolveColumns(e),n=t.filter(function(e){return e.includes(".")}),a=[];return n.forEach(function(e){a.push({key:e,value:e.split(".")})}),e.toArray().then(function(e){return e.map(function(e){return a.forEach(function(t){var n=t.key,a=t.value;e[n]=a.reduce(function(e,t){return e[t]?e[t]:""},e)}),e}),e}).then(function(e){return e})}},{key:"resolveConfigType",value:function(e){var t=this,n={};return Object.keys(this.config.tablesConfig()).forEach(function(a){var i=t.config.tablesConfig()[a];i&&void 0!=i[e]&&(n[a]=i[e])}),n}},{key:"onRefresh",value:function(e){this.onRefresh=e}},{key:"hasActionLoad",value:function(e){return this.resolveActionLoad(e)}},{key:"hasDelete",value:function(e){var t=this.resolveConfigType("noDelete");return t[e.name]===!1||void 0===t[e.name]}},{key:"resolveActionLoad",value:function(e){return this.actionsLoad[e.name]}},{key:"deleteAllTable",value:function(){var e=this;return Promise.all(this.tables.map(function(t){return!!e.hasDelete(t)&&e.delete(t)}))}},{key:"delete",value:function(e,t){var n=this,a=new Promise(function(){});return e&&!t?a=e.clear():e&&t&&(a=e.bulkDelete(t)),a.then(function(){return n.countTupleTable(e)}).then(function(){return n.onRefresh()})}},{key:"deleteObject",value:function(e,t){var n=this.primaryKeyName(e);return e.delete(t[n])}},{key:"loadAll",value:function(){var e=this;return Promise.all(this.tables.map(function(t){return e.load(t)}))}},{key:"load",value:function(e){var t=this,n=this.resolveActionLoad(e);if(n){var a=this.context?n.call(this.context):n(),i=this;return a&&a.then?a.then(function(){return i.countTupleTable(e)}).then(function(){return t.onRefresh()}):new Pormise(function(){t.countTupleTable(e),t.onRefresh()})}}},{key:"createDb",value:function(){var e=new Dexie(this.dbDump.dbName+"ddd");return e.version(1).stores(this.dbDump.tableDef),e}},{key:"drop",value:function(){var e=this;return this.db.delete().then(function(){return e.createDb()}).then(function(t){t.open().then(function(){e.db=t,e.tables=t.tables,e.onNewDb&&e.onNewDb(e.db),e.dbDump.config({db:t}),e.countTupleForEachTable()})})}},{key:"dump",value:function(){var e=this;return this.dbDump.dump().then(function(t){return e.createFileAndDowload(t)})}},{key:"dumpTable",value:function(e){var t=this;return this.dbDump.dumpTable(e).then(function(e){return t.createFileAndDowload(e)})}},{key:"countTupleForEachTable",value:function(){var e=this,t=0,n=this.tables.length,a=function a(){t<n?e.countTupleTable(e.tables[t]).then(function(){t++,a()}):e.onRefresh()};a()}},{key:"countTupleTable",value:function(e){return e.count().then(function(t){e.nbRow=t})}},{key:"primaryKeyName",value:function(e){return e.schema.primKey.name}},{key:"search",value:function e(t,n){var a=this,e=t.toUpperCase();if(0!=e.indexOf(":"))return this.buildData(n).then(function(t){return t=t.map(function(e){return e.valstring=a.valuesToString(e),e}).filter(function(t){return t.valstring.includes(e)})});var r=function(){var t=e.substr(1).split("=");if(t.length>1){var r=function(){var e=t[0].trim().toLowerCase();return{v:{v:a.buildData(n).then(function(n){return n[0][e]&&(n=n.filter(function(n){var a=n[e];return!isNaN(parseFloat(a))&&isFinite(a)?a==1*t[1]:a.toUpperCase().includes(t[1])})),n})}}}();if("object"===("undefined"==typeof r?"undefined":i(r)))return r.v}return{v:new Promise(function(){})}}();return"object"===("undefined"==typeof r?"undefined":i(r))?r.v:void 0}},{key:"createFileAndDowload",value:function(e){var t=new Blob([e],{type:"text/plain"}),n=window.URL.createObjectURL(t),a=document.createElement("a");a.style="display: none",a.href=n,a.download="dump_"+(new Date).getTime()+".txt",document.body.appendChild(a),a.click(),setTimeout(function(){document.body.removeChild(a),window.URL.revokeObjectURL(n)},50)}},{key:"valuesToString",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?"":arguments[1];for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var a=e[n];a instanceof Object?t+=this.valuesToString(a):t=t+" "+e[n]}return t.toUpperCase()}}]),e}();n.DbManagerService=o},{"./dbDump.service.js":4}]},{},[3]);
//# sourceMappingURL=dexieAdmin.min.js.map