Commit cebc46fd authored by Jack Woodward's avatar Jack Woodward

Final Project Updated Submission

Many files different, but much of the code remains the same.

-Updated simplification algorithm to no longer include unncessary
tolerance variable and made it so that the curve is automatically
simplified on first draw, hiding the buttons for simplifying the curve
(see selectCurve() method in Manager)
-Added framework for 3D audio support in Views.js
parent 6de62f36
# OS generated files #
######################
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
#### NODE WEBKIT BUILDER
/**/build/*
/**/cache
/**/node_modules/*
####QRCODE png
WOB/qr_code.png
###Ignore save as text directory
trajAsText/**
\ No newline at end of file
# Using WebOSCBridge Application Server
This project is designed as a desktop application running a server for spatialization control interfaces.
This project is an adaption of the [interface.js][interfacejs] project by Charlie Roberts and modified.
## Build from source
If you want to build the server from source you'll need to download and install [node.js][nodejs]. After installing Node.js, open a terminal and run the following commands:
```
npm install
npm install gulp -g
gulp traj
```
This will build releases of the application.
You can configure the release in the gulpfile.js file.
[nodejs]:http://nodejs.org
[npm]:http://nodejs.org/download/
[node-webkit]:https://github.com/rogerwang/node-webkit#downloads
[interfacejs]:https://github.com/charlieroberts/interface.js
var NwBuilder = require('nw-builder');
var gulp = require('gulp');
var gutil = require('gulp-util');
gulp.task('traj', function () {
var nw = new NwBuilder({
version: '0.12.1',
macIcns: './icon-design/icon.icns',
//winIco: './icon-design/icon.ico', //can only use that on win or need WINE
appVersion:'1.0.0',
buildType: 'versioned',
//zip:'true', //if activated this prevents the traj folder to appear
files: [ './**',
'!./gulpfile.js',
'!./icon-design/**',
'!./cache/**',
'!./build/**',
//'!./node_modules/**', attempt to remove the dev packages by installing node --prodcution afterwards
'!./node_modules/gulp/**',
'!./node_modules/gulp-util/**',
'!./node_modules/nw-builder/**'],
platforms: ['osx32', 'win32', 'linux32'] // change this to 'win' for/on windows
//platforms: ['osx'] // change this to 'win' for/on windows
});
// Log stuff you want
nw.on('log', function (msg) {
gutil.log('nw-builder', msg);
});
// Build returns a promise, return it so the task isn't called in parallel
return nw.build().catch(function (err) {
gutil.log('nw-builder', err);
});
});
\ No newline at end of file
<html>
<head>
<script src="./jquery-ui-1.10.1.custom/js/jquery-1.9.1.js"></script>
<script src="jquery-ui-1.10.1.custom/js/jquery-ui-1.10.1.custom.js" type="text/javascript" charset="utf-8"></script>
<script src="mousetrap.js" type="text/javascript" charset="utf-8"></script>
<link rel="stylesheet" href="jquery-ui-1.10.1.custom/css/base/jquery.ui.theme.css" type="text/css" media="screen" title="no title" charset="utf-8">
<link rel="stylesheet" href="jquery-ui-1.10.1.custom/css/base/jquery.ui.button.css" type="text/css" media="screen" title="no title" charset="utf-8">
<link rel="stylesheet" href="jquery-ui-1.10.1.custom/css/base/jquery.ui.resizable.css" type="text/css" media="screen" title="no title" charset="utf-8">
<link rel="stylesheet" href="jquery-ui-1.10.1.custom/css/base/jquery.ui.accordion.css" type="text/css" media="screen" title="no title" charset="utf-8">
<title>Traj Server</title>
<style>
.highlightedRow { background-color: #dedede; }
body { font-family:Helvetica, sans-serif; background-color:#ededed; }
ul { list-style:none; margin:0; padding:0;}
h3 { font-size:1em; display:inline; color:#333; margin-right:3em; margin-left:1em;}
h1 { font-size:1.2em;}
td { font-size:.6em; }
.infoTable td { border:none !important; }
.infoTable td { font-size:.8em !important; }
.infoTable tr td:first-child { text-align: right; white-space: nowrap !important; width:25%; font-color:#666; font-weight:bold;}
.infoTable tr td:last-child { width:75%; padding-left: 2em; text-align:left !important; }
table { border-collapse:collapse; width: 100%; table-layout:fixed; }
#monitorTable, #serverTable, #clientsTable, th { border: 1px solid #666;}
table thead th { font-size:.8em; }
th { white-space: nowrap !important; margin: 0; padding: 5px; font-weight:normal; font-size: .8em; background:#999; color:#fff;}
.ui-widget{font-size:.7em;}
thead tr { width: 100%; }
tbody { height: 2em;}
#clientsTableBody tr td, #monitorTableBody tr td { text-align: center; border-right:1px solid #666; border-top:1px solid #666; font-size:.9em; overflow:hidden; }
#serverTableBody td { border-right:1px solid #666; border-top:1px solid #666; }
#serverTableBody td:last-child, #serverTableBody td:nth-child(2) { text-align: center; vertical-align: top; }
#monitorTable, #serverTable, #clientsTable { border:1px solid #666; margin-bottom:1.5em; }
#clientsTable tbody, #serverTable tbody { font-size:.85em; }
#monitorTable tbody { font-size:.75em;}
#newServerTable { text-align:left ; }
input[type="text"] { width: 90%; }
.interfaceHeader { line-height:1.75em !important;}
</style>
</head>
<body>
<div id='servers'>
<div class="ui-widget-header ui-corner-all interfaceHeader">
<h3>Servers</h3>
<!-- <button id="newButton">New Server</button>
<button id="deleteButton">Remove Selected Server</button> -->
</div>
<table id='serverTable'>
<thead>
<tr>
<th width='80%'>server info</th><th width='10%'>append client id</th><th width='10%'>monitor</th>
</tr>
</thead>
<tbody id="serverTableBody">
</tbody>
</table>
</div>
<div style="height:245px ; text-align: center; diplay: block; margin:auto;">
<div id='target-qrcode'></div>
<div id='target-url' style="text-align: center; font-size:2em; margin:auto;"></div>
</div>
<div id='clients'>
<div class="ui-widget-header ui-corner-all interfaceHeader">
<h3>Clients</h3>
</div>
<table id='clientsTable'>
<thead>
<tr>
<th>id #</th><th>ip address</th><th>connected to</th><th>interface</th><th>monitor</th>
</tr>
</thead>
<tbody id="clientsTableBody">
</tbody>
</table>
</div>
<div id='monitor'>
<div class="ui-widget-header ui-corner-all interfaceHeader">
<h3>Monitor</h3>
<button id="clearMonitorButton">Clear</button>
</div>
<table id='monitorTable'>
<thead>
<tr>
<th width='10%'>server</th><th width='10%'>client id</th><th width='15%'>address / type</th><th width='15%'>typetags / channel</th><th width='50%'>values</th>
</tr>
</thead>
<tbody id="monitorTableBody">
</tbody>
</table>
</div>
<input type="file" nwfile style='display:none' id='fileButton'/>
<input type="file" nwsaveas style='display:none' id='saveFileButton'/>
<script>
if(typeof global.interface === 'undefined') {
var s = $('<script src="server.js" type="text/javascript" charset="utf-8">');
$('head').append(s);
}else{
// page reloaded, remove all servers
global.interface.removeAllServers();
}
</script>
</body>
</html>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
/*!
* jQuery UI Accordion 1.10.1
* http://jqueryui.com
*
* Copyright 2013 jQuery Foundation and other contributors
* Released under the MIT license.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Accordion#theming
*/
.ui-accordion .ui-accordion-header {
display: block;
cursor: pointer;
position: relative;
margin-top: 2px;
padding: .5em .5em .5em .7em;
min-height: 0; /* support: IE7 */
}
.ui-accordion .ui-accordion-icons {
padding-left: 2.2em;
}
.ui-accordion .ui-accordion-noicons {
padding-left: .7em;
}
.ui-accordion .ui-accordion-icons .ui-accordion-icons {
padding-left: 2.2em;
}
.ui-accordion .ui-accordion-header .ui-accordion-header-icon {
position: absolute;
left: .5em;
top: 50%;
margin-top: -8px;
}
.ui-accordion .ui-accordion-content {
padding: 1em 2.2em;
border-top: 0;
overflow: auto;
}
/*!
* jQuery UI Button 1.10.1
* http://jqueryui.com
*
* Copyright 2013 jQuery Foundation and other contributors
* Released under the MIT license.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Button#theming
*/
.ui-button {
display: inline-block;
position: relative;
padding: 0;
line-height: normal;
margin-right: .1em;
cursor: pointer;
vertical-align: middle;
text-align: center;
overflow: visible; /* removes extra width in IE */
}
.ui-button,
.ui-button:link,
.ui-button:visited,
.ui-button:hover,
.ui-button:active {
text-decoration: none;
}
/* to make room for the icon, a width needs to be set here */
.ui-button-icon-only {
width: 2.2em;
}
/* button elements seem to need a little more width */
button.ui-button-icon-only {
width: 2.4em;
}
.ui-button-icons-only {
width: 3.4em;
}
button.ui-button-icons-only {
width: 3.7em;
}
/* button text element */
.ui-button .ui-button-text {
display: block;
line-height: normal;
}
.ui-button-text-only .ui-button-text {
padding: .4em 1em;
}
.ui-button-icon-only .ui-button-text,
.ui-button-icons-only .ui-button-text {
padding: .4em;
text-indent: -9999999px;
}
.ui-button-text-icon-primary .ui-button-text,
.ui-button-text-icons .ui-button-text {
padding: .4em 1em .4em 2.1em;
}
.ui-button-text-icon-secondary .ui-button-text,
.ui-button-text-icons .ui-button-text {
padding: .4em 2.1em .4em 1em;
}
.ui-button-text-icons .ui-button-text {
padding-left: 2.1em;
padding-right: 2.1em;
}
/* no icon support for input elements, provide padding by default */
input.ui-button {
padding: .4em 1em;
}
/* button icon element(s) */
.ui-button-icon-only .ui-icon,
.ui-button-text-icon-primary .ui-icon,
.ui-button-text-icon-secondary .ui-icon,
.ui-button-text-icons .ui-icon,
.ui-button-icons-only .ui-icon {
position: absolute;
top: 50%;
margin-top: -8px;
}
.ui-button-icon-only .ui-icon {
left: 50%;
margin-left: -8px;
}
.ui-button-text-icon-primary .ui-button-icon-primary,
.ui-button-text-icons .ui-button-icon-primary,
.ui-button-icons-only .ui-button-icon-primary {
left: .5em;
}
.ui-button-text-icon-secondary .ui-button-icon-secondary,
.ui-button-text-icons .ui-button-icon-secondary,
.ui-button-icons-only .ui-button-icon-secondary {
right: .5em;
}
/* button sets */
.ui-buttonset {
margin-right: 7px;
}
.ui-buttonset .ui-button {
margin-left: 0;
margin-right: -.3em;
}
/* workarounds */
/* reset extra padding in Firefox, see h5bp.com/l */
input.ui-button::-moz-focus-inner,
button.ui-button::-moz-focus-inner {
border: 0;
padding: 0;
}
/*!
* jQuery UI Resizable 1.10.1
* http://jqueryui.com
*
* Copyright 2013 jQuery Foundation and other contributors
* Released under the MIT license.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Resizable#theming
*/
.ui-resizable {
position: relative;
}
.ui-resizable-handle {
position: absolute;
font-size: 0.1px;
display: block;
}
.ui-resizable-disabled .ui-resizable-handle,
.ui-resizable-autohide .ui-resizable-handle {
display: none;
}
.ui-resizable-n {
cursor: n-resize;
height: 7px;
width: 100%;
top: -5px;
left: 0;
}
.ui-resizable-s {
cursor: s-resize;
height: 7px;
width: 100%;
bottom: -5px;
left: 0;
}
.ui-resizable-e {
cursor: e-resize;
width: 7px;
right: -5px;
top: 0;
height: 100%;
}
.ui-resizable-w {
cursor: w-resize;
width: 7px;
left: -5px;
top: 0;
height: 100%;
}
.ui-resizable-se {
cursor: se-resize;
width: 12px;
height: 12px;
right: 1px;
bottom: 1px;
}
.ui-resizable-sw {
cursor: sw-resize;
width: 9px;
height: 9px;
left: -5px;
bottom: -5px;