Neues Initialrelease mit IonicMaterial

This commit is contained in:
Carsten Hilmer
2016-08-22 12:55:52 +02:00
parent 30a5df79aa
commit 45e482b14d
1249 changed files with 305225 additions and 68794 deletions

View File

@@ -0,0 +1,87 @@
<!--View Information-->
<!--View name : Contract Detail-->
<!--Controller name : contractDetailCtrl-->
<!--Controller path : www/templates/application-storage/sqLite/js/controllers.js-->
<!--State name : app.contractdetail-->
<!--URL : #app/contractdetail-->
<ion-view title="Contract">
<!--left button on navigation bar-->
<ion-nav-buttons side="left">
<a ng-click="$ionicGoBack()" class="button back-button buttons button-clear header-item nav-back-btn">
<i class="ion-android-arrow-back"></i>
</a>
</ion-nav-buttons> <!--end left button on navigation bar-->
<!--contract detail section-->
<form name="contractForm">
<ion-content id="contract-details-content">
<!--contract detail input section-->
<md-input-container md-no-float>
<i class="ion-android-person"></i>
<input ng-model="contract.firstName" name="firstName" required placeholder="* First Name (required)">
</md-input-container>
<md-input-container md-no-float>
<i class="ion-android-people"></i>
<input ng-model="contract.lastName" name="lastName" required placeholder="* Last Name (required)">
</md-input-container>
<md-input-container md-no-float>
<i class="ion-android-phone-portrait"></i>
<input ng-model="contract.telephone" name="telephone" required placeholder="* Telephone (required)"
type="tel">
</md-input-container>
<md-input-container md-no-float>
<i class="ion-android-mail"></i>
<input ng-model="contract.email" name="email" placeholder="Email">
</md-input-container>
<md-input-container md-no-float>
<i class="ion-android-calendar"></i>
<input ng-model="contract.createDate" disabled name="dateTime" placeholder="Date Time">
</md-input-container>
<md-input-container md-no-float>
<i class="ion-android-favorite"></i>
<input ng-model="contract.age" numbers-only name="age" placeholder="Age" type="tel">
</md-input-container><!--end contract detail input section-->
<!--contract switch section-->
<md-switch ng-model="contract.isEnable" ng-disabled="actionDelete">
{{(contract.isEnable == true ? 'Enable' : 'Disabled' ) }} Contract
</md-switch><!--end contract switch section-->
</ion-content>
<div class="footer-fab-bar">
<a class="md-button md-accent md-fab fab-footer" ng-click="showListBottomSheet($event,contractForm)"
aria-label="Contract Form Actions">
<i class="ion-android-star"></i>
</a>
</div>
</form><!--end contract detail section-->
<!--angular template section-->
<script type="text/ng-template" id="contract-actions-template">
<md-bottom-sheet class="md-list md-has-header">
<h1 class="md-bottom-sheet-header">Contract Actions</h1>
<md-list>
<!--md bottom sheet list item-->
<md-list-item>
<a class="md-default-theme md-bottom-sheet-list-item"
ng-class="{ 'disabled-link': disableSaveBtn}"
ng-click="saveContract(contract,$event)">
<i class="ion-android-list"></i>
<span>Save Contract</span>
</a>
</md-list-item>
<md-list-item ng-show="actionDelete">
<a class="md-default-theme md-bottom-sheet-list-item"
ng-click="deleteContract(contract,$event)">
<i class="ion-android-delete"></i>
<span>Remove Contract</span>
</a>
</md-list-item>
<!--end md bottom sheet list item-->
</md-list>
</md-bottom-sheet>
</script><!--end angular template section-->
</ion-view>

View File

@@ -0,0 +1,105 @@
<!--View Information-->
<!--View name : Contract List-->
<!--Controller name : contractListCtrl-->
<!--Controller path : www/templates/application-storage/sqLite/js/controllers.js-->
<!--State name : app.contractlist-->
<!--URL : #app/contractlist-->
<ion-view view-title="">
<!--right button on navigation bar-->
<ion-nav-buttons side="right">
<md-button ng-disabled="isLoading" class="md-icon-button ion-nav-button-right" ng-click="navigateTo('app.contractsetting')"
aria-label="Setting">
<i class="ion-android-more-vertical"></i>
</md-button>
</ion-nav-buttons> <!--end right button on navigation bar-->
<!--toolbar section-->
<md-toolbar class="bar-subheader md-tall md-primary toolbar-medium">
<div>
<h1>Pokedex Helper</h1>
<h2>Dein Trainertool deluxe</h2>
</div>
<a class="md-button md-accent md-fab fab-toolbar-medium"
ng-click="navigateTo('app.contractdetail',contract)"
aria-label="Add">
<i class="icon ion-plus"></i>
</a>
</md-toolbar><!--end toolbar section-->
<!--contract list section-->
<ion-content id="contract-list-content" class="fade-in">
<!--list section-->
<md-list>
<md-list-item>
<md-input-container md-no-float="" class="md-list-item-full-width">
<input ng-model="filterText" placeholder="Finde Pokemon...">
</md-input-container>
</md-list-item>
<!--Below code it will disable animation to better performance-->
<div ng-if="!isAnimated" class="row contract-list-item"
ng-repeat="pokemon in pokemons | filter: filterText | orderBy: 'pokemonname'">
<div class="col-25 icon-user">
<img ng-src="{{ pokemon.pokemonimage }}" class="image-list-thumb"/>
</div>
<div class="col-50">
<h3>{{ pokemon.pokemonname }}</h3>
<div ng-if="pokemon.pokemontypa > 0" class="chip">
<img src="{{ pokemon.pokemonimage }}" alt="PokemonTyp" width="96" height="96">
{{ pokemon.pokemontypaString }}
</div>
<div ng-if="pokemon.pokemontypb > 0" class="chip">
<img src="{{ pokemon.pokemonimage }}" alt="PokemonTyp" width="96" height="96">
{{ pokemon.pokemontypbString }}
</div>
</div>
<div class="col-25 status-button">
<md-menu md-position-mode="target-right target" class="md-list-item-md-menu-right">
<p ng-click="$mdOpenMenu()">
<md-icon md-menu-origin md-svg-icon="more"></md-icon>
</p>
<md-menu-content width="1">
<md-menu-item>
<a class="md-button md-default-theme" ng-click="navigateTo('app.contractdetail',contract)">
<span class="menu-item-button">Edit</span>
</a>
</md-menu-item>
<md-menu-item>
<a class="md-button md-default-theme" ng-click="callTo(contract.telephone)">
<span class="menu-item-button" >Call {{pokemon.telephone}}</span>
</a>
</md-menu-item>
</md-menu-content>
</md-menu>
</div>
</div>
<!--Below code it will show animation when selecting row.-->
<md-list-item ng-if="isAnimated" class="md-list-item-default"
ng-click="navigateTo('app.contractdetail',pokemon)"
ng-repeat="pokemon in pokemons | filter: filterText | orderBy: 'pokemonname'">
<img ng-src="{{ pokemon.pokemonimage }}" class="image-list-thumb"/>
<p>{{ pokemon.pokemonname }} {{ pokemon.pokemonimage }}</p>
<md-switch class="md-secondary"
ng-model="pokemon.isEnable"
ng-change="updateContract(pokemon)">
</md-switch>
</md-list-item>
</md-list>
<!--end list section-->
</ion-content><!--end contract list section-->
<!--loading progress-->
<div id="contract-list-loading-progress" class="loading-progress fade-in">
<ion-spinner ng-if="!isAndroid" class="progress-circular"></ion-spinner>
<md-progress-circular ng-if="isAndroid" md-mode="indeterminate"></md-progress-circular>
</div><!--end loading progress-->
</ion-view>

View File

@@ -0,0 +1,54 @@
<!--View Information-->
<!--View name : Contract Setting-->
<!--Controller name : contractSettingCtrl-->
<!--Controller path : www/templates/application-storage/sqLite/js/controllers.js-->
<!--State name : app.contractsetting-->
<!--URL : #app/contractsetting-->
<ion-view title="SQLite Setting">
<!--left button on navigation bar-->
<ion-nav-buttons side="left">
<a ng-click="$ionicGoBack()" class="button back-button buttons button-clear header-item nav-back-btn">
<i class="ion-android-arrow-back "></i>
</a>
</ion-nav-buttons><!--end left button on navigation bar-->
<ion-content scroll="false">
<!--list section-->
<md-list>
<md-subheader class="md-warn">The setting will change SQLite data</md-subheader>
<md-list-item class="md-list-item-default" ng-click="navigateTo('app.contractlist',true)">
<i class="fa fa-play"></i>
<p>Enable Row Animation</p>
</md-list-item>
<md-list-item class="md-list-item-default" ng-click="navigateTo('app.contractlist',false)">
<i class="fa fa-stop"></i>
<p>Disable Row Animation</p>
</md-list-item>
<md-list-item class="md-list-item-default" ng-click="clearAllData($event)">
<i class="ion-android-delete"></i>
<p>&nbsp;Clear All Data</p>
</md-list-item>
<md-list-item class="md-list-item-default" ng-click="$ionicGoBack()">
<i class="ion-android-refresh"></i>
<p>Refresh Data</p>
</md-list-item>
<md-list-item class="md-list-item-default">
<i class="fa fa-user"></i>
<p>Contract Count</p>
<span ng-show="loading">...</span>
<span ng-show="!loading">{{contractsCount.length}}</span>
</md-list-item>
</md-list><!--end list section-->
</ion-content>
</ion-view>

View File

@@ -0,0 +1,383 @@
// Controller will call pokedexDB Services to present data to html view.
//
// For using sqlite you have to install $cordovaSQLite by running the following
// command in your cmd.exe for windows or terminal for mac:
// $ cd your_project_path
// $ ionic plugin remove io.litehelpers.cordova.sqlite
// $ ionic plugin add https://github.com/litehelpers/Cordova-sqlite-storage.git
//
// For install $cordovaSQLite plugin you also have to install this following plugin to get $cordovaSQLite work :
// $ ionic plugin add com.ionic.keyboard
//
// Learn more about $cordovaSQLite :
// http://ngcordova.com/docs/plugins/sqlite/
//
// Controller of Contract List Page.
appControllers.controller('contractListCtrl', function ($scope, $stateParams,$filter, $mdDialog, $timeout, $ionicModal, $state, $mdBottomSheet, pokedexDB) {
// initialForm is the first activity in the controller.
// It will initial all variable data and let the function works when page load.
$scope.initialForm = function () {
//$scope.isLoading is the variable that use for check statue of process.
$scope.isLoading = true;
//$scope.isAnimated is the variable that use for receive object data from state params.
//For enable/disable row animation.
$scope.isAnimated = $stateParams.isAnimated;
// $scope.pokemons is the variable that store data from pokedexDB service.
$scope.pokemons = [];
// $scope.filterText is the variable that use for searching.
$scope.filterText = "";
// The function for show/hide loading progress.
$timeout(function () {
if ($scope.isAndroid) {
jQuery('#contract-list-loading-progress').show();
}
else {
jQuery('#contract-list-loading-progress').fadeIn(700);
}
}, 400);
$timeout(function () {
//Get all contracts.
$scope.getPokemonList();
jQuery('#contract-list-loading-progress').hide();
jQuery('#contract-list-content').fadeIn();
$scope.isLoading = false;
}, 3000);// End loading progress.
};// End initialForm.
// getPokemonList is for get all contracts.
// By calling pokedexDB.all() service.
$scope.getPokemonList = function () {
$scope.pokemons = pokedexDB.all();
};//End getPokemonList.
// updateContract is for update contracts.
// By sending contract to pokedexDB.update(contract) service.
// Parameter :
// contract = contract that user select from view.
$scope.updateContract = function (pokemon) {
pokedexDB.update(pokemon);
};// End updateContract.
// navigateTo is for navigate to other page
// by using targetPage to be the destination page
// and sending objectData to the destination page.
// Parameter :
// targetPage = destination page.
// objectData = object that will sent to destination page.
$scope.navigateTo = function (targetPage, objectData) {
$timeout(function(){
$state.go(targetPage, {
contractdetail: objectData,
actionDelete: (objectData == null ? false : true)
});
},400);
};// End navigateTo.
// callTo is for using mobile calling.
// Parameter :
// number = number that going to call.
$scope.callTo = function (number) {
window.open("tel:" + number);
}// End callTo.
$scope.initialForm();
});// End of Contract List Page Controller.
// Controller of Contract Detail Page.
appControllers.controller('contractDetailCtrl', function ($mdBottomSheet, $mdToast, $scope, $stateParams, $filter, $mdDialog, $ionicHistory, pokedexDB, $ionicHistory) {
// initialForm is the first activity in the controller.
// It will initial all variable data and let the function works when page load.
$scope.initialForm = function () {
// $scope.disableSaveBtn is the variable for setting disable or enable the save button.
$scope.disableSaveBtn = false;
// $scope.pokemon is the variable that store contract detail data that receive form contract list page.
// Parameter :
// $stateParams.actionDelete(bool) = status that pass from contract list page.
// $stateParams.contractdetail(object) = contract that user select from contract list page.
$scope.pokemon = $scope.getContractData($stateParams.actionDelete, $stateParams.contractdetail);
//$scope.actionDelete is the variable for allow or not allow to delete data.
// It will allow to delete data when have data in the database.
$scope.actionDelete = $stateParams.actionDelete;
}; //End initialForm.
// getContractData is for get contract detail data.
$scope.getContractData = function (actionDelete, contractDetail) {
// tempContract is temporary contract data detail.
var tempContract = {
id: null,
firstName: '',
lastName: '',
telephone: '',
email: '',
createDate: $filter('date')(new Date(), 'MMM dd yyyy'),
age: null,
isEnable: false
}
// If actionDelete is true Contract Detail Page will show contract detail that receive form contract list page.
// else it will show tempContract for user to add new data.
return (actionDelete ? angular.copy(contractDetail) : tempContract);
};//End get contract detail data.
// saveContract is for save contract.
// Parameter :
// contract(object) = contract object that presenting on the view.
// $event(object) = position of control that user tap.
$scope.saveContract = function (pokemon, $event) {
//$mdBottomSheet.hide() use for hide bottom sheet.
$mdBottomSheet.hide();
//mdDialog.show use for show alert box for Confirm to save data.
$mdDialog.show({
controller: 'DialogController',
templateUrl: 'confirm-dialog.html',
targetEvent: $event,
locals: {
displayOption: {
title: "Confirm to save data?",
content: "Data will save to SQLite.",
ok: "Confirm",
cancel: "Close"
}
}
}).then(function () {
// For confirm button to save data.
try {
// To update data by calling pokedexDB.update(contract) service.
if ($scope.actionDelete) {
if ($scope.pokemon.id == null) {
$scope.pokemon.id = $scope.pokemonList[$scope.pokemonList.length - 1].id;
}
pokedexDB.update(contract);
} // End update data.
// To add new data by calling pokedexDB.add(contract) service.
else {
pokedexDB.add(pokemon);
$scope.pokemonList = pokedexDB.all();
$scope.actionDelete = true;
}// End add new data.
// Showing toast for save data is success.
$mdToast.show({
controller: 'toastController',
templateUrl: 'toast.html',
hideDelay: 400,
position: 'top',
locals: {
displayOption: {
title: "Data Saved !"
}
}
});//End showing toast.
}
catch (e) {
// Showing toast for unable to save data.
$mdToast.show({
controller: 'toastController',
templateUrl: 'toast.html',
hideDelay: 800,
position: 'top',
locals: {
displayOption: {
title: window.globalVariable.message.errorMessage
}
}
});//End showing toast.
}
}, function () {
// For cancel button to save data.
});// End alert box.
};// End save contract.
// deleteContract is for remove contract.
// Parameter :
// contract(object) = contract object that presenting on the view.
// $event(object) = position of control that user tap.
$scope.deleteContract = function (pokemon, $event) {
//$mdBottomSheet.hide() use for hide bottom sheet.
$mdBottomSheet.hide();
//mdDialog.show use for show alert box for Confirm to delete data.
$mdDialog.show({
controller: 'DialogController',
templateUrl: 'confirm-dialog.html',
targetEvent: $event,
locals: {
displayOption: {
title: "Confirm to remove data?",
content: "Data will remove form SQLite.",
ok: "Confirm",
cancel: "Close"
}
}
}).then(function () {
// For confirm button to remove data.
try {
// Remove contract by calling pokedexDB.remove(contract)service.
if ($scope.pokemon.id == null) {
$scope.pokemon.id = $scope.pokemonList[$scope.pokemonList.length - 1].id;
}
pokedexDB.remove(pokemon);
$ionicHistory.goBack();
}// End remove contract.
catch (e) {
// Showing toast for unable to remove data.
$mdToast.show({
controller: 'toastController',
templateUrl: 'toast.html',
hideDelay: 800,
position: 'top',
locals: {
displayOption: {
title: window.globalVariable.message.errorMessage
}
}
});// End showing toast.
}
}, function () {
// For cancel button to remove data.
});// End alert box.
};// End remove contract.
// validateRequiredField is for validate the required field.
// Parameter :
// form(object) = contract object that presenting on the view.
$scope.validateRequiredField = function (form) {
return !( (form.firstName.$error.required == undefined)
&& (form.lastName.$error.required == undefined)
&& (form.telephone.$error.required == undefined));
};// End validate the required field.
// showListBottomSheet is for showing the bottom sheet.
// Parameter :
// $event(object) = position of control that user tap.
// contractForm(object) = contract object that presenting on the view.
$scope.showListBottomSheet = function ($event, contractForm) {
$scope.disableSaveBtn = $scope.validateRequiredField(contractForm);
$mdBottomSheet.show({
templateUrl: 'contract-actions-template',
targetEvent: $event,
scope: $scope.$new(false),
});
};// End showing the bottom sheet.
$scope.initialForm();
});// End Contract Detail page Controller.
// Controller of Contract Setting Page.
appControllers.controller('contractSettingCtrl', function ($scope,$ionicViewSwitcher,$state, $timeout, $stateParams, $mdDialog, $mdBottomSheet, $mdToast, $ionicHistory, pokedexDB) {
// initialForm is the first activity in the controller.
// It will initial all variable data and let the function works when page load.
$scope.initialForm = function () {
//$scope.loading is the variable for loading progress.
$scope.loading = true;
//$scope.pokemonsCount is the variable for get contracts count.
$scope.pokemonsCount = [];
//To get contract count and stop loading progress.
$timeout(function () {
$scope.pokemonsCount = pokedexDB.all();
$scope.loading = false;
}, 1000);
}; // End initialForm.
// clearAllData is for clear all contract data.
// Parameter :
// $event(object) = position of control that user tap.
$scope.clearAllData = function ($event) {
//$mdBottomSheet.hide() use for hide bottom sheet.
$mdBottomSheet.hide();
//mdDialog.show use for show alert box for Confirm to remove all data.
$mdDialog.show({
controller: 'DialogController',
templateUrl: 'confirm-dialog.html',
targetEvent: $event,
locals: {
displayOption: {
title: "Confirm to remove all data?",
content: "All data will remove from SQLite.",
ok: "Confirm",
cancel: "Close"
}
}
}).then(function () {
// For confirm button to remove all data.
try {
// Remove all data by calling pokedexDB.removeAll() service.
pokedexDB.removeAll();
$scope.pokemonsCount = [];
//Showing toast for remove data is success.
$mdToast.show({
controller: 'toastController',
templateUrl: 'toast.html',
hideDelay: 400,
position: 'top',
locals: {
displayOption: {
title: "All data removed !"
}
}
});
}
catch (e) {
// Showing toast for unable to remove data.
$mdToast.show({
controller: 'toastController',
templateUrl: 'toast.html',
hideDelay: 800,
position: 'top',
locals: {
displayOption: {
title: window.globalVariable.message.errorMessage
}
}
});
}
}, function () {
// For cancel button to remove all data.
});// End alert box.
};// End clear all data from sqlite
// navigateTo is for navigate to other page
// by using targetPage to be the destination state.
// Parameter :
// stateNames = target state to go.
// objectData = Object data will send to destination state.
$scope.navigateTo = function (stateName,objectData) {
if ($ionicHistory.currentStateName() != stateName) {
$ionicHistory.nextViewOptions({
disableAnimate: false,
disableBack: true
});
//Next view animate will display in back direction
$ionicViewSwitcher.nextDirection('back');
$state.go(stateName, {
isAnimated: objectData,
});
}
}; // End of navigateTo.
$scope.initialForm();
});// End Contract Setting page Controller.

View File

@@ -0,0 +1,214 @@
// The factory for connecting with SQLite database
//
// Advantage of SQLite have no limit ability to store data.
// It will create the sqlite file that store in the application.
// Also can store more complex data such as relation between tables.
//
// For using sqlite you have to install $cordovaSQLite by running the following
// command in your cmd.exe for windows or terminal for mac:
// $ cd your_project_path
// $ ionic plugin remove io.litehelpers.cordova.sqlite
// $ ionic plugin add https://github.com/litehelpers/Cordova-sqlite-storage.git
//
// For install $cordovaSQLite plugin you also have to install this following plugin to get $cordovaSQLite work :
// $ ionic plugin add com.ionic.keyboard
//
// Learn more about $cordovaSQLite :
// http://ngcordova.com/docs/plugins/sqlite/
//
// The database table of contract will be created in modules.run() method in www/js/app.js file
//
// Variable name db come from initialSQLite() in in www/js/app.js file because we need to initial it before we use.
//
// object schema of contract data is:
// [{
// id: id of contract,
// firstName: first name,
// lastName: last name,
// telephone: telephone
// email: email,
// createDate: contract created date,
// age: age,
// isEnable: to enable and unable status of contract
// }]
//ContractDB service
appServices.factory('pokedexDB', function ($cordovaSQLite)
{
// pokemonList variable use to store data from sqlite query
var pokemonList = [];
var pokemontypen = [];
return {
// Select all data from sqlite
all: function ()
{
pokemonList = [];
pokemontypen = [];
//Typen einlesen
var query = "SELECT * FROM tblPokemonTyp order by ID ASC";
$cordovaSQLite.execute(db, query).then(function (res)
{
if (res.rows.length > 0)
{
pokemontypen.push('');
for (var i = 0; i < res.rows.length; i++)
{
pokemontypen.push(res.rows.item(i).TYP);
}
}
});
// Variable for prepare query statement to select all contracts.
var query = "SELECT * FROM tblPokemon order by POKEDEXID ASC";
// Execute query statement from query variable.
$cordovaSQLite.execute(db, query).then(function (res)
{
if (res.rows.length > 0)
{
for (var i = 0; i < res.rows.length; i++)
{
var dataItem = {
id : res.rows.item(i).ID ,
pokedexid : res.rows.item(i).POKEDEXID ,
pokemonname : res.rows.item(i).POKEMONNAME ,
pokemontypa : res.rows.item(i).POKEMONTYPA ,
pokemontypb : res.rows.item(i).POKEMONTYPB ,
pokemontypaString : pokemontypen[res.rows.item(i).POKEMONTYPA] ,
pokemontypbString : pokemontypen[res.rows.item(i).POKEMONTYPB] ,
pokemonimage : res.rows.item(i).POKEMONIMAGE
};
pokemonList.push(dataItem);
}
}
});
return pokemonList;
},// End select all data.
// To add data to sqlite.
// It will receive newContract from controller then insert it into sqlite.
add: function (newContract)
{
// Variable for prepare query statement to insert contracts.
var query = "INSERT INTO contracts ( " +
" firstName , " +
" lastName , " +
" telephone , " +
" email , " +
" createDate , " +
" age , " +
" isEnable) " +
" VALUES (?,?,?,?,?,?,?) ";
// Execute query statement from query variable.
$cordovaSQLite.execute(db, query,
[newContract.firstName ,
newContract.lastName ,
newContract.telephone ,
newContract.email ,
newContract.createDate ,
parseInt(newContract.age) ,
newContract.isEnable ,
]).then(function (res)
{
var dataItem = {
id : res.insertId ,
firstName : newContract.firstName ,
lastName : newContract.lastName ,
telephone : newContract.telephone ,
email : newContract.email ,
createDate : newContract.createDate ,
age : newContract.age ,
isEnable : newContract.isEnable
};
pokemonList.push(dataItem);
});
},// End add data to sqlite.
setPokemonImage: function(pokemon)
{
// Variable for prepare query statement to update contracts by contracts id.
var query = "UPDATE tblPokemon SET " +
" POKEMONIMAGE = (?) " +
" WHERE POKEDEXID = (?) " ;
console.log(pokemon.image + " " + pokemon.pokedexid);
// Execute query statement from query variable.
$cordovaSQLite.execute(db, query, [
pokemon.image ,
pokemon.pokedexid]
).then(function (result)
{
for (var i = 0; i < pokemonList.length; i++)
{
if (pokemonList[i].id === parseInt(pokemon.id))
{
pokemonList[i] = pokemon;
}
}
}, function(error) {
console.error(error);
})
},// End update data to sqlite.
// To update data to sqlite.
// It will receive contract from controller then update it into sqlite.
update: function (contract)
{
// Variable for prepare query statement to update contracts by contracts id.
var query = "UPDATE contracts SET " +
" firstName = (?) , " +
" lastName = (?) , " +
" telephone = (?) , " +
" email = (?) , " +
" age = (?) , " +
" isEnable = (?) " +
" WHERE id = (?) " ;
// Execute query statement from query variable.
$cordovaSQLite.execute(db, query, [
contract.firstName ,
contract.lastName ,
contract.telephone ,
contract.email ,
parseInt(contract.age) ,
contract.isEnable ,
contract.id]
).then(function (result)
{
for (var i = 0; i < pokemonList.length; i++)
{
if (pokemonList[i].id === parseInt(contract.id))
{
pokemonList[i] = contract;
}
}
})
},// End update data to sqlite.
// To remove data from sqlite.
// It will receive contract from controller then use contract.id to remove contract from sqlite.
remove: function (contract)
{
// Variable for prepare query statement to remove contracts by contracts id.
var query = "DELETE FROM contracts WHERE id = (?)";
// Execute query statement from query variable.
$cordovaSQLite.execute(db, query, [contract.id]).then(function (result)
{
pokemonList.splice(pokemonList.indexOf(contract), 1);
})
},// End remove data from sqlite.
// To remove all data from sqlite.
removeAll: function ()
{
// Variable for prepare query statement to remove all contracts.
var query = "DELETE FROM contracts";
// Execute query statement from query variable.
$cordovaSQLite.execute(db, query).then(function (result)
{
pokemonList.length = 0;
})
},// End remove all data from sqlite.
};
}); //End ContractDB service.