From f0dc92c50972d35141685738b4a32f031db72012 Mon Sep 17 00:00:00 2001
From: hackbard <hackbard@hackdaworld.org>
Date: Mon, 25 Jul 2016 22:08:56 +0200
Subject: [PATCH] still idb problems, need to wait until idb init is finished!

---
 www/index.html   | 84 ++++++++++++++++++++++++++++++++++++++++
 www/js/app.js    | 29 ++++++++++++++
 www/js/config.js | 14 +++++++
 www/js/ctrl.js   | 91 ++++++++++++++++++++++++++++++++++++++++++++
 www/js/idbsrv.js | 99 ++++++++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 317 insertions(+)
 create mode 100644 www/index.html
 create mode 100644 www/js/app.js
 create mode 100644 www/js/config.js
 create mode 100644 www/js/ctrl.js
 create mode 100644 www/js/idbsrv.js

diff --git a/www/index.html b/www/index.html
new file mode 100644
index 0000000..b7e08ee
--- /dev/null
+++ b/www/index.html
@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<html>
+
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport"
+          content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
+    <title>Staff Line</title>
+
+    <link href="lib/ionic/css/ionic.css" rel="stylesheet">
+    <link href="css/style.css" rel="stylesheet">
+
+    <!-- IF using Sass (run gulp sass first),
+         then uncomment below and remove the CSS includes above
+    <link href="css/ionic.app.css" rel="stylesheet">
+    -->
+
+    <!-- jquery -->
+    <script src="js/jquery-2.2.3.min.js"></script>
+
+    <!-- ionic/angularjs js -->
+    <script src="lib/ionic/js/ionic.bundle.js"></script>
+
+    <!-- cordova script (this will be a 404 during development) -->
+    <script src="cordova.js"></script>
+
+    <!-- application js -->
+    <script src="js/jsutils/utils.js"></script>
+    <script src="js/jsutils/idb.js"></script>
+    <script src="js/jsutils/xhr.js"></script>
+    <script src="js/idbsrv.js"></script>
+    <script src="js/config.js"></script>
+    <script src="js/app.js"></script>
+    <script src="js/ctrl.js"></script>
+  </head>
+
+  <body ng-app="staffline" ng-controller="slctrl">
+
+
+
+<ion-side-menus>
+	<ion-side-menu-content>
+		<ion-header-bar class="bar-dark">
+			<button menu-toggle
+			        class="button icon ion-navicon">
+			</button>
+			<h1 class="title">{{selected_app.name}}</h1>
+		</ion-header-bar>
+
+		<!--
+		<ion-content ng-repeat="s in subapps" id="{{s.id}}">
+			{{s.name}} ...
+		</ion-content>
+		-->
+
+		<ion-content id="settings" style="display:none"
+		             ng-controller="settingsctrl">
+			<h1 ng-repeat="t in test">{{t}}</h1>
+		</ion-content>
+	</ion-side-menu-content>
+
+	<ion-side-menu side="left" expose-aside-when="large">
+		<ion-header-bar class="bar-dark">
+			<h1 class="title">Staff Line</h1>
+		</ion-header-bar>
+		<ion-content>
+			<ion-list>
+				<ion-item menu-close
+				          ng-repeat="s in subapps"
+				          class="item item-icon-right"
+				          ng-click="app_click(s)">
+					{{s.name}}
+					<i class="icon {{s.icon}}"></i>
+				</ion-item>
+			</ion-list>
+		</ion-content>
+	</ion-side-menu>
+</ion-side-menus>
+
+
+  </body>
+
+</html>
+
diff --git a/www/js/app.js b/www/js/app.js
new file mode 100644
index 0000000..a06b415
--- /dev/null
+++ b/www/js/app.js
@@ -0,0 +1,29 @@
+// staffline - crew organization app
+
+var appmod = angular.module('staffline',['ionic','idbmod']);
+
+
+/*
+appmod.run(function($ionicPlatform) {
+	$ionicPlatform.ready(function() {
+		if(window.cordova && window.cordova.plugins.Keyboard) {
+			cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
+			cordova.plugins.Keyboard.disableScroll(true);
+		}
+		if(window.StatusBar) {
+			StatusBar.styleDefault();
+		}
+	});
+});
+
+appmod.config(function($stateProvider, $urlRouterProvider) {
+
+	$stateProvider.state('staffline',{
+		abstract: true,
+		controller: 'stafflinectrl'
+	});
+
+	$urlRouterProvider.otherwise('staffline');
+});
+*/
+
diff --git a/www/js/config.js b/www/js/config.js
new file mode 100644
index 0000000..1b0c982
--- /dev/null
+++ b/www/js/config.js
@@ -0,0 +1,14 @@
+// staffline indexed db stores
+
+var db_settings_store = {
+	keyname: true,
+	keytype: 'autoIncrement',
+	content: {
+		1: [
+			{
+				'passwd': ""
+			}
+		]
+	}
+}
+
diff --git a/www/js/ctrl.js b/www/js/ctrl.js
new file mode 100644
index 0000000..c9d6d71
--- /dev/null
+++ b/www/js/ctrl.js
@@ -0,0 +1,91 @@
+// staffline - crew organization app
+
+appmod.controller('slctrl',function($scope,idbsrv) {
+
+	$scope.subapps = [
+		{
+			name: "Time Clock",
+			icon: "ion-android-time",
+			id: "timeclock"
+		},
+		{
+			name: "Roster",
+			icon: "ion-person-stalker",
+			id: "roster"
+		},
+		{
+			name: "Brainstorming",
+			icon: "ion-android-chat",
+			id: "brainstorming"
+		},
+		{
+			name: "ToDo",
+			icon: "ion-clipboard",
+			id: "todo"
+		},
+		{
+			name: "Settings",
+			icon: "ion-android-settings",
+			id: "settings"
+		}
+	];
+
+	$scope.selected_app = $scope.subapps[0];
+
+	$scope.app_click = function(app) {
+		$scope.selected_app=app;
+		for(s in $scope.subapps) {
+			var id=$scope.subapps[s].id;
+			if(app.id==id) {
+				$('#'+id).css('display','block');
+				cl("enabled "+id);
+			}
+			else {
+				$('#'+id).css('display','none');
+				cl("disabled "+id);
+			}
+		}
+		console.log("selecting app "+app.name);
+	}
+
+	// indexxed db
+	var dbdel=false;
+	//dbdel=true;
+	if(!dbdel) {
+		$scope.idbstores = {
+			'settings': db_settings_store
+		};
+		idbsrv.init('staffline',function(event) {
+			cl("indexed db initialized successfuly!");
+		},1,$scope.idbstores,function(event) {
+			objdbg(event);
+		}).then(function() {
+			idbsrv.get_store_items('settings',undefined,0,-1).then(
+				function(item) {
+					for(var i in item);
+					console.log("passwd: "+item[i].passwd);
+				}
+			);
+		});
+	}
+	else {
+		idb.name='staffline';
+		idbsrv.del()
+	}
+
+});
+
+appmod.controller('settingsctrl',function($scope,idbsrv) {
+
+/*
+	idbsrv.get_store_items('settings',undefined,0,-1),then(function(item) {
+		for(var i in item);
+		if(item[i].passwd==undefined)
+			$scope.test = [ "Enter passwd" ];
+		else
+			$scope.test = [ "Verify passwd" ];
+	});
+*/
+
+});
+
diff --git a/www/js/idbsrv.js b/www/js/idbsrv.js
new file mode 100644
index 0000000..894fea1
--- /dev/null
+++ b/www/js/idbsrv.js
@@ -0,0 +1,99 @@
+// indexed db service
+
+var idbmod = angular.module('idbmod',[]);
+
+idbmod.factory("idbsrv",function($q) {
+	var srvobject={};
+	srvobject.init=function(name,successcb,version,stores,upgradecb) {
+		var defer=$q.defer();
+		idb.init(name,function(event) {
+			if(successcb!==undefined)
+				successcb(event);
+			defer.resolve(idb.handle);
+		},version,stores);
+		return defer.promise;
+	};
+	srvobject.del_store=function(store,callback) {
+		var defer=$q.defer();
+		idb.del_store(store,function() {
+			if(callback!==undefined)
+				callback();
+			defer.resolve();
+		});
+		return defer.promise;
+	};
+	srvobject.add_store_item=function(store,item,callback) {
+		var defer=$q.defer();
+		idb.add_store_item(store,item,function(event) {
+			if(callback!==undefined)
+				callback(event);
+			defer.resolve();
+		});
+		return defer.promise;
+	};
+	srvobject.del_store_item=function(store,num,callback) {
+		var defer=$q.defer();
+		idb.del_store_item(store,num,function(event) {
+			if(callback!==undefined)
+				callback(event);
+			defer.resolve();
+		});
+		return defer.promise;
+	};
+	srvobject.update_store_item=function(store,num,nitem,callback) {
+		var defer=$q.defer();
+		idb.update_store_item(store,num,nitem,function(event) {
+			if(callback!==undefined)
+				callback(event)
+			defer.resolve();
+		});
+		return defer.promise;
+	};
+	srvobject.get_store_items=function(store,callback,low,up) {
+		var defer=$q.defer();
+		idb.get_store_items(store,function(item) {
+			if(callback!==undefined)
+				callback(item);
+			defer.resolve(item);
+		});
+		return defer.promise;
+	};
+	srvobject.get_item_by_key=function(store,key,callback) {
+		var defer=$q.defer();
+		idb.get_item_by_key(store,key,function(item) {
+			if(callback!==undefined)
+				callback(item);
+			defer.resolve();
+		});
+		return defer.promise;
+	};
+	srvobject.get_item_by_index=function(store,index,val,callback) {
+		var defer=$q.defer();
+		idb.get_item_by_index(store,index,val,function(item) {
+			if(callback!==undefined)
+				callback(item);
+			defer.resolve();
+		});
+		return defer.promise;
+	};
+	srvobject.del_item_by_key=function(store,key,callback) {
+		var defer=$q.defer();
+		idb.del_item_by_key(store,key,function(event) {
+			if(callback!==undefined)
+				callback(event);
+			defer.resolve();
+		});
+		return defer.promise;
+	};
+	srvobject.del=function(callback) {
+		var defer=$q.defer();
+		idb.del(function() {
+			if(callback!==undefined)
+				callback();
+			defer.resolve();
+		});
+		return defer.promise;
+	};
+	return srvobject;
+});
+
-- 
2.39.5