COMMIT : Pre-Release commit #1

This commit is contained in:
Rafat Hussain 2015-09-25 17:46:23 +05:30
parent 4645c9b8b9
commit 65cbe6e418
6 changed files with 251 additions and 54 deletions

View File

@ -43,6 +43,33 @@
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
<button class="btn btn-primary btn-block" data-ng-click="waveTest()"> <button class="btn btn-primary btn-block" data-ng-click="waveTest()">
<span class="glyphicon glyphicon-share-alt pull-left" data-position="left"></span>GO</button> <span class="glyphicon glyphicon-share-alt pull-left" data-position="left"></span>GO</button>
</div> </div>
<div class="col-md-6">
<button class="btn btn-primary btn-block" id="reportButton" data-ng-click="viewReport()" disabled>
<span class="glyphicon glyphicon-share-alt pull-left" data-position="left"></span>View Report</button>
</div>
<script type="text/ng-template" id="myModalContent.html">
<div class="modal-header">
<h3 class="modal-title" style="font-family:Lucida Console;color:black;font-size:large">Wavelet Transform Output</h3>
</div>
<div class="modal-body" style="font-family:Lucida Console;color:blue;font-size:small">
<p>Method : {{method}} ({{ext}})</p>
<p>Wavelet : {{wname}}</p>
<p>Wavelet Filters :</p>
<p>LPD : [<span data-ng-repeat="lp1 in lpd track by $index">{{lp1}} {{$last ? '' : ', '}}</span>]</p>
<p>HPD : [<span data-ng-repeat="hp1 in hpd track by $index">{{hp1}} {{$last ? '' : ', '}}</span>]</p>
<p>LPR : [<span data-ng-repeat="lp2 in lpr track by $index">{{lp2}} {{$last ? '' : ', '}}</span>]</p>
<p>HPR : [<span data-ng-repeat="hp2 in hpr track by $index">{{hp2}} {{$last ? '' : ', '}}</span>]</p>
<p>Decomposition Levels : {{J}}</p>
<p>APPX{{J}} : [<span data-ng-repeat="a1 in appx track by $index">{{a1}} {{$last ? '' : ', '}}</span>]</p>
<div data-ng-repeat="j in iter">
<p>DET{{j}} : [<span data-ng-repeat="a2 in det.slice(0,0)">{{a2}} {{$last ? '' : ', '}}</p>
</div>
</div>
<div class="modal-footer">
<button class="btn btn-primary" type="button" ng-click="ok()" disabled>OK</button>
<button class="btn btn-warning" type="button" ng-click="cancel()">Cancel</button>
</div>
</script>
</div> </div>

View File

@ -11,7 +11,7 @@
</div> </div>
<div class="panel-body"> <div class="panel-body">
<span class="btn btn-block btn-primary btn-file"> <span class="btn btn-block btn-primary btn-file">
Browse<input type="file" id="finp1"></input> Browse<input type="file" id="finp1" ></input>
</span> </span>
<button class="btn btn-primary btn-block" data-ng-click="fileInput()" data-uib="twitter%20bootstrap/button" data-ver="1"> <button class="btn btn-primary btn-block" data-ng-click="fileInput()" data-uib="twitter%20bootstrap/button" data-ver="1">
<span class="glyphicon glyphicon-folder-open pull-left" data-position="left"></span>Upload</button> <span class="glyphicon glyphicon-folder-open pull-left" data-position="left"></span>Upload</button>

View File

@ -58,8 +58,9 @@
<!--<script src="js/index_user_scripts.js"></script> --> <!--<script src="js/index_user_scripts.js"></script> -->
<script src="js/dygraph-combined-dev.js"></script> <script src="js/dygraph-combined-dev.js"></script>
<script src="js/wavewrapper.js"></script> <script src="js/wavewrapper.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular-route.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular-route.min.js"></script>
<script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-0.13.0.js"></script>
<script src="js/ngfile.js"></script> <script src="js/ngfile.js"></script>
</body> </body>
</html> </html>

View File

@ -1,4 +1,4 @@
var app = angular.module('ngmain', ['ngRoute']); var app = angular.module('ngmain', ['ngRoute','ui.bootstrap']);
app.config(function($routeProvider){ app.config(function($routeProvider){
$routeProvider $routeProvider
@ -11,6 +11,10 @@ app.config(function($routeProvider){
templateUrl: 'display.html', templateUrl: 'display.html',
controller: 'displayController' controller: 'displayController'
}) })
.when('/report', {
templateUrl: 'report.html',
controller: 'reportController'
})
.when('/about', { .when('/about', {
templateUrl: 'about.html', templateUrl: 'about.html',
controller: 'mainController' controller: 'mainController'
@ -53,13 +57,26 @@ app.controller('mainController', function ($scope, $http, wave) {
$scope.dataInput = function () { $scope.dataInput = function () {
var x = $scope.inp1.valueOf().split(/[\s,;\t\r\n]+/); var x = $scope.inp1.valueOf().split(/[\s,;\t\r\n]+/);
wave.sigData = new Float64Array(x.length);
wave.sigLength = x.length;
//console.log(wave.sigLength);
var i; var i;
for (i = 0; i < x.length; i++) { var j = 0;
wave.sigData[i] = parseFloat(x[i]);
for (var i = 0; i < x.length; i++) {
if (!isNaN(parseFloat(x[i]))) {
j = j + 1;
}
}
wave.sigLength = j;
wave.sigData = new Float64Array(j);
j = 0;
for (var i = 0; i < x.length; i++) {
temp = parseFloat(x[i]);
if (!isNaN(temp)) {
wave.sigData[j] = temp;
j = j + 1;
}
} }
//alert(wave.sigData[0]); //alert(wave.sigData[0]);
location.href = '#/display'; location.href = '#/display';
@ -74,19 +91,34 @@ app.controller('mainController', function ($scope, $http, wave) {
reader.onload = function (e) { reader.onload = function (e) {
var x = reader.result.split(/[\s,;\t\r\n]+/); var x = reader.result.split(/[\s,;\t\r\n]+/);
wave.sigData = new Float64Array(x.length);
var i;
var j = 0; var j = 0;
for (i = 0; i < x.length; i++) { for (var i = 0; i < x.length; i++) {
if (!isNaN(parseFloat(x[i]))) {
j = j + 1;
}
}
wave.sigLength = j;
wave.sigData = new Float64Array(j);
j = 0;
for (var i = 0; i < x.length; i++) {
temp = parseFloat(x[i]); temp = parseFloat(x[i]);
if (!isNaN(temp)) { if (!isNaN(temp)) {
wave.sigData[j] = temp; wave.sigData[j] = temp;
j = j + 1; j = j + 1;
} }
} }
wave.sigLength = j;
/*
var rm = x.length - j;
if (rm > 0) {
wave.sigData.splice(j, rm);
}
*/
location.href = '#/display'; location.href = '#/display';
} }
@ -124,12 +156,20 @@ app.controller('mainController', function ($scope, $http, wave) {
data = response.data; data = response.data;
var x = data.split(/[\s,;\t\r\n]+/); var x = data.split(/[\s,;\t\r\n]+/);
wave.sigData = new Float64Array(x.length);
var i;
var j = 0; var j = 0;
for (i = 0; i < x.length; i++) { for (var i = 0; i < x.length; i++) {
if (!isNaN(parseFloat(x[i]))) {
j = j + 1;
}
}
wave.sigLength = j;
wave.sigData = new Float64Array(j);
j = 0;
for (var i = 0; i < x.length; i++) {
temp = parseFloat(x[i]); temp = parseFloat(x[i]);
if (!isNaN(temp)) { if (!isNaN(temp)) {
wave.sigData[j] = temp; wave.sigData[j] = temp;
@ -137,8 +177,12 @@ app.controller('mainController', function ($scope, $http, wave) {
} }
} }
wave.sigLength = j; /*
var rm = x.length - j;
if (rm > 0) {
wave.sigData.splice(j, rm);
}
*/
location.href = '#/display'; location.href = '#/display';
}, function (response) { }, function (response) {
$scope.data = response.data || "Request failed"; $scope.data = response.data || "Request failed";
@ -152,17 +196,13 @@ app.controller('siteController', function ($scope) {
}); });
app.controller('frontController', function ($scope) { app.controller('displayController', function ($scope, $http, $modal, wave) {
});
app.controller('displayController', function ($scope, $http, wave) {
//console.log(wave.sigLength); //console.log(wave.sigLength);
var lbl = []; var lbl = [];
$scope.MaxIter = 0; $scope.MaxIter = 0;
$scope.selected = {}; $scope.selected = {};
$scope.wdisplays = []; $scope.wdisplays = [];
for (i = 0; i < wave.sigLength; ++i) { for (var i = 0; i < wave.sigLength; ++i) {
lbl[i] = [i, wave.sigData[i]]; lbl[i] = [i, wave.sigData[i]];
//console.log(lbl[i]); //console.log(lbl[i]);
} }
@ -289,6 +329,7 @@ app.controller('displayController', function ($scope, $http, wave) {
$scope.waveTest = function () { $scope.waveTest = function () {
var method; var method;
var ext = "NULL"; var ext = "NULL";
if ($scope.selected.method.id == "0") { if ($scope.selected.method.id == "0") {
method = "dwt"; method = "dwt";
ext = "sym"; ext = "sym";
@ -297,19 +338,38 @@ app.controller('displayController', function ($scope, $http, wave) {
ext = "per"; ext = "per";
} else if ($scope.selected.method.id == "2") { } else if ($scope.selected.method.id == "2") {
method = "swt"; method = "swt";
ext = "per";
} else if ($scope.selected.method.id == "3") { } else if ($scope.selected.method.id == "3") {
method = "modwt"; method = "modwt";
ext = "per";
}
//console.log($scope.selected.family.family);
if ($scope.selected.family.family == "biorthogonal" && method == "modwt") {
alert("the Method MODWT is not implemented for biorthogonal wavelets");
return;
} }
console.log(method); //console.log(wave.sigData);
var N = wave.sigLength; var N = wave.sigLength;
var flength = $scope.selected.wavelet.filtlength; var flength = $scope.selected.wavelet.filtlength;
var J = $scope.selected.level; var J = $scope.selected.level;
//console.log(N,J);
if (method == "swt") {
var div = parseInt(Math.pow(2, J));
if ((N % div) != 0) {
alert("In SWT the data length should be divisible by 2^(Number of Decomposition Levels)");
return;
}
}
wave.length = new Int32Array(J + 2); wave.length = new Int32Array(J + 2);
wave.lenlength = J + 2; wave.lenlength = J + 2;
wave.filtlength = flength;
wave.J = J; wave.J = J;
wave.method = method;
wave.ext = ext;
//wave.output = []; //wave.output = [];
//wave.filters = []; //wave.filters = [];
wave.wname = $scope.selected.wavelet.wavelet; wave.wname = $scope.selected.wavelet.wavelet;
@ -351,10 +411,10 @@ app.controller('displayController', function ($scope, $http, wave) {
wave_transform(inpHeap.byteOffset, N, wave.wname, method, J, ext, outHeap.byteOffset, lenHeap.byteOffset, filtHeap.byteOffset); wave_transform(inpHeap.byteOffset, N, wave.wname, method, J, ext, outHeap.byteOffset, lenHeap.byteOffset, filtHeap.byteOffset);
wave.output = new Float64Array(outHeap.buffer, outHeap.byteOffset, outlength); wave.output = new Float64Array(outHeap.buffer, outHeap.byteOffset, outlength);
wave.filter = new Float64Array(filtHeap.buffer, filtHeap.byteOffset, 4 * length); wave.filter = new Float64Array(filtHeap.buffer, filtHeap.byteOffset, 4 * flength);
wave.length = new Int32Array(lenHeap.buffer, lenHeap.byteOffset, J + 2); wave.length = new Int32Array(lenHeap.buffer, lenHeap.byteOffset, J + 2);
//console.log(wave.filter);
console.log(wave.length); //console.log(wave.length);
Module._free(inpHeap.byteOffset); Module._free(inpHeap.byteOffset);
Module._free(outHeap.byteOffset); Module._free(outHeap.byteOffset);
@ -381,14 +441,16 @@ app.controller('displayController', function ($scope, $http, wave) {
legend: 'always', legend: 'always',
color: '#3399ff', color: '#3399ff',
animatedZooms: true, animatedZooms: true,
title: 'Input' title: 'Full Decomposition'
} }
); );
document.getElementById("reportButton").disabled = false;
} }
$scope.updateGraph = function () { $scope.updateGraph = function () {
console.log($scope.selected.wdisplay); //console.log($scope.selected.wdisplay);
var lbl = []; var lbl = [];
if ($scope.selected.wdisplay == 0) { if ($scope.selected.wdisplay == 0) {
for (var i = 0; i < wave.sigLength; ++i) { for (var i = 0; i < wave.sigLength; ++i) {
@ -420,11 +482,117 @@ app.controller('displayController', function ($scope, $http, wave) {
legend: 'always', legend: 'always',
color: '#3399ff', color: '#3399ff',
animatedZooms: true, animatedZooms: true,
title: 'Input' title: $scope.wdisplays[parseInt($scope.selected.wdisplay)]
} }
); );
} }
$scope.items = ['item1', 'item2', 'item3'];
$scope.viewReport = function () {
//window.open('#/report', '_blank');
var modalInstance = $modal.open({
templateUrl: 'myModalContent.html',
controller: 'reportController',
windowClass: 'large-Modal',
resolve: {
items: function () {
return $scope.items;
}
}
});
modalInstance.result.then(function (selectedItem) {
$scope.selected = selectedItem;
});
}
}); });
app.controller('reportController', function ($scope, $modalInstance, items, wave) {
//$scope.wname = wave.wname;
$scope.wname = wave.wname;
if (wave.method == "dwt") {
$scope.method = "Discrete Wavelet Transform";
if (wave.ext == "sym") {
$scope.ext = "Symmetric Extension";
} else {
$scope.ext = "Periodic Extension";
}
} else if (wave.method == "swt") {
$scope.method = "Stationary Wavelet Transform";
$scope.ext = "Periodic Extension";
} else if (wave.method == "modwt") {
$scope.method = "Maximal Overlap Discrete Wavelet Transform";
$scope.ext = "Periodic Extension";
}
$scope.flength = wave.filtlength;
var fval = parseInt($scope.flength);
$scope.J = wave.J;
var J = parseInt(wave.J);
$scope.lpd = [];
$scope.hpd = [];
$scope.lpr = [];
$scope.hpr = [];
for (var i = 0; i < fval; i++) {
$scope.lpd[i] = wave.filter[i];
$scope.hpd[i] = wave.filter[i + fval];
$scope.lpr[i] = wave.filter[i + 2 * fval];
$scope.hpr[i] = wave.filter[i + 3 * fval];
//console.log(i + $scope.flength, i);
}
//console.log(wave.filter);
$scope.length = wave.length;
$scope.outlength = wave.outLength;
$scope.appx = [];
$scope.det = [];
for (var i = 0; i < $scope.length[0]; i++) {
$scope.appx[i] = wave.output[i];
}
for (var i = $scope.length[0]; i < wave.outLength; i++) {
$scope.det[i - parseInt($scope.length[0])] = wave.output[i];
}
$scope.iter = [];
var detlen = wave.outLength - parseInt($scope.length[0]);
$scope.liter = [];
$scope.liter[i] = 0;
var i2 = 0;
for (var i = 0; i < J; i++) {
$scope.iter[i] = i;
i2 += wave.output[i + 1];
$scope.liter[i+1] = i2;
}
function chunk(array,start,end) {
var newarr = [];
for(var i = start; i < end;i++) {
}
}
$scope.items = items;
$scope.selected = {
item: $scope.items[0]
};
$scope.ok = function () {
$modalInstance.close($scope.selected.item);
};
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
});

3
report.html Normal file
View File

@ -0,0 +1,3 @@
<div class="row marketing">
</div>

View File

@ -35,24 +35,7 @@ body {
font-size: 100px; font-size: 100px;
} }
/* Pricing Page Styles */
.price {
display: block;
font-size: 50px;
line-height: 50px;
}
.price sup {
top: -20px;
left: 2px;
font-size: 20px;
}
.period {
display: block;
font-style: italic;
}
/* Footer Styles */ /* Footer Styles */
@ -98,7 +81,13 @@ footer {
} }
/*Following code is taken from http://www.abeautifulsite.net/whipping-file-inputs-into-shape-with-bootstrap-3/*/ /*Following code is taken from http://www.abeautifulsite.net/whipping-file-inputs-into-shape-with-bootstrap-3/*/
/*
.btn-file {
position: relative;
overflow: hidden;
}
.btn-file input[type=file] { .btn-file input[type=file] {
position: absolute; position: absolute;
top: 0; top: 0;
@ -113,4 +102,13 @@ footer {
cursor: inherit; cursor: inherit;
display: block; display: block;
} }
*/
.large-Modal .modal-dialog{
width:400px;
height: 400px;
position: absolute;
top:0; bottom: 0; left: 0; right: 0;
margin: auto;
overflow: scroll;
}