mirror of
https://github.com/shouptech/share-a-bike.git
synced 2026-02-03 12:29:42 +00:00
new project
This commit is contained in:
commit
7d1dcaa0e9
13 changed files with 324 additions and 0 deletions
90
share-a-bike/app/assistants/main-assistant.js
Normal file
90
share-a-bike/app/assistants/main-assistant.js
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
function MainAssistant(argFromPusher) {
|
||||
}
|
||||
|
||||
MainAssistant.prototype = {
|
||||
setup: function() {
|
||||
Ares.setupSceneAssistant(this);
|
||||
},
|
||||
cleanup: function() {
|
||||
Ares.cleanupSceneAssistant(this);
|
||||
},
|
||||
|
||||
// The find button has been tapped
|
||||
findButtonTap: function(inSender) {
|
||||
// Start Spinning
|
||||
this.showSpinner(true);
|
||||
|
||||
// API URL for BCycle
|
||||
var url = 'http://api.bcycle.com/services/mobile.svc/ListKiosks';
|
||||
var gpsSuccess = true;
|
||||
var gpsResult = 0;
|
||||
|
||||
var onGpsSuccess = function(result) {
|
||||
gpsResult = result;
|
||||
};
|
||||
|
||||
var onGpsFailure = function(result) {
|
||||
gpsSuccess = false;
|
||||
this.showSpinner(false);
|
||||
};
|
||||
|
||||
// Function for when AJAX request is complete
|
||||
var onAjaxComplete = function(transport) {
|
||||
var kiosks = [5];
|
||||
kiosks[0] = {name: "Name 1", distance: "0.1 mi", address: "100 Fake St", bikes: "0", docks: "1"};
|
||||
kiosks[1] = {name: "Name 2", distance: "0.2 mi", address: "100 Fake St", bikes: "0", docks: "1"};
|
||||
kiosks[2] = {name: "Name 3", distance: "0.3 mi", address: "100 Fake St", bikes: "0", docks: "1"};
|
||||
kiosks[3] = {name: "Name 4", distance: "0.4 mi", address: "100 Fake St", bikes: "0", docks: "1"};
|
||||
kiosks[4] = {name: "Name 5", distance: "12.2 mi", address: "100 Fake St", bikes: "0", docks: "1"};
|
||||
// Display Kiosks
|
||||
this.listModel = {
|
||||
items: kiosks
|
||||
};
|
||||
this.controller.setWidgetModel("kioskList", this.listModel);
|
||||
// We're done, stop spinning
|
||||
this.showSpinner(false);
|
||||
}.bind(this);
|
||||
|
||||
var onAjaxFailure = function(transport) {
|
||||
// There has been a failure, stop spinning
|
||||
this.showSpinner(false);
|
||||
};
|
||||
|
||||
// Get GPS Coord
|
||||
this.getGpsCoord(onGpsSuccess, onGpsFailure);
|
||||
|
||||
if(gpsSuccess) {
|
||||
// Place AJAX request
|
||||
this.ajaxRequest(url, onAjaxComplete, onAjaxFailure);
|
||||
};
|
||||
},
|
||||
|
||||
// Find GPS Coordinate
|
||||
getGpsCoord: function(onSuccess, onFailure) {
|
||||
this.controller.serviceRequest('palm://com.palm.location', {
|
||||
method:"getCurrentPosition",
|
||||
parameters:{},
|
||||
onSuccess: onSuccess,
|
||||
onFailure: onFailure
|
||||
});
|
||||
},
|
||||
|
||||
// Perform AJAX request to BCycle API
|
||||
ajaxRequest: function(url, onComplete, onFailure) {
|
||||
var kioskRequest = new Ajax.Request(url, {
|
||||
method: "get",
|
||||
evalJSON: 'force',
|
||||
contentType: 'application/x-www-form-urlencoded',
|
||||
requestHeaders: {
|
||||
"USER_AGENT": navigator.userAgent
|
||||
},
|
||||
onComplete: onComplete,
|
||||
onFailure: onFailure
|
||||
});
|
||||
},
|
||||
|
||||
// Function to start/stop spinning
|
||||
showSpinner: function(show) {
|
||||
this.controller.get('findButton').mojo[(show ? 'activate' : 'deactivate')]();
|
||||
},
|
||||
};
|
||||
7
share-a-bike/app/assistants/stage-assistant.js
Normal file
7
share-a-bike/app/assistants/stage-assistant.js
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
function StageAssistant() {
|
||||
}
|
||||
|
||||
StageAssistant.prototype.setup = function() {
|
||||
this.controller.pushScene({name: "main", disableSceneScroller: true});
|
||||
this.controller.setWindowOrientation("free");
|
||||
};
|
||||
54
share-a-bike/app/views/main/main-chrome.js
Normal file
54
share-a-bike/app/views/main/main-chrome.js
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
opus.Gizmo({
|
||||
name: "main",
|
||||
dropTarget: true,
|
||||
ontap: "mainTap",
|
||||
type: "Palm.Mojo.Panel",
|
||||
h: "100%",
|
||||
styles: {
|
||||
zIndex: 2,
|
||||
opacity: 1,
|
||||
bgImage: "images/Sharrow-BG.jpg"
|
||||
},
|
||||
chrome: [
|
||||
{
|
||||
name: "findButton",
|
||||
ontap: "findButtonTap",
|
||||
disabled: undefined,
|
||||
label: "Find Kiosks",
|
||||
type: "Palm.Mojo.ActivityButton",
|
||||
l: 0,
|
||||
t: 0
|
||||
},
|
||||
{
|
||||
name: "scroller1",
|
||||
scrollPosition: {
|
||||
left: 0,
|
||||
top: 0
|
||||
},
|
||||
type: "Palm.Mojo.Scroller",
|
||||
l: 0,
|
||||
t: 261,
|
||||
styles: {
|
||||
cursor: "move",
|
||||
overflow: "hidden"
|
||||
},
|
||||
controls: [
|
||||
{
|
||||
name: "kioskList",
|
||||
dropTarget: true,
|
||||
items: [],
|
||||
useSampleData: false,
|
||||
title: undefined,
|
||||
itemHtml: "<div class=\"palm-row\">\n <div class=\"kiosk_left_col\">\n <div class=\"kiosk_name\">#{name}</div>\n <div class=\"kiosk_address\">#{address}</div>\n </div>\n <div class=\"kiosk_right_col\">\n <div class=\"kiosk_distance\">#{distance}</div>\n <div class=\"kiosk_availability\">#{bikes}B #{docks}D</div>\n </div>\n</div>",
|
||||
swipeToDelete: false,
|
||||
rowTapHighlight: false,
|
||||
rowFocusHighlight: false,
|
||||
type: "Palm.Mojo.List",
|
||||
l: 0,
|
||||
t: 0,
|
||||
h: 100
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
});
|
||||
0
share-a-bike/app/views/main/main-scene.html
Normal file
0
share-a-bike/app/views/main/main-scene.html
Normal file
9
share-a-bike/appinfo.json
Normal file
9
share-a-bike/appinfo.json
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"id": "com.mikeshoup.share-a-bike",
|
||||
"version": "0.0.1",
|
||||
"vendor": "ShoupTech",
|
||||
"type": "web",
|
||||
"main": "index.html",
|
||||
"title": "Share-a-Bike",
|
||||
"icon": "icon.png"
|
||||
}
|
||||
107
share-a-bike/ares.js
Normal file
107
share-a-bike/ares.js
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
opus = {
|
||||
paths: {},
|
||||
depends: [],
|
||||
path: {
|
||||
// match $[anything]/
|
||||
pattern: /\$([^\/\\]*)(\/)?/g,
|
||||
// replace macros of the form $pathname with the mapped value of paths.pathname
|
||||
rewrite: function(inPath) {
|
||||
var working, result = inPath;
|
||||
do {
|
||||
working = false;
|
||||
result = result.replace(this.pattern, function(macro, name) {
|
||||
working = true;
|
||||
var path = opus.paths[name];
|
||||
return path ? (path.charAt(path.length-1) == "/" ? path : path + "/") : "";
|
||||
});
|
||||
} while (working);
|
||||
return result;
|
||||
}
|
||||
},
|
||||
argify: function(inSearch) {
|
||||
var args = inSearch.slice(1).split("&");
|
||||
for (var i=0, a, nv; a=args[i]; i++) {
|
||||
// convert "name=value" to [name, value]
|
||||
nv = args[i] = a.split("=");
|
||||
// and then to name: value
|
||||
args[nv[0]] = nv.length > 1 ? nv[1] : true;
|
||||
}
|
||||
return args;
|
||||
},
|
||||
locateScript: function(inName) {
|
||||
var l = inName.length;
|
||||
var scripts = document.getElementsByTagName("script");
|
||||
for(var i=0, s, src; (s=scripts[i]); i++) {
|
||||
src = s.getAttribute("src") || "";
|
||||
if(src.slice(-l) == inName) {
|
||||
return src.slice(0, -l);
|
||||
}
|
||||
}
|
||||
},
|
||||
/*
|
||||
depends() does (when evaluated in JS, basically, debug mode):
|
||||
for dependencies that are packages (no extension [ug?])
|
||||
- determine name, establish path (paths["opus-Aerie"] = "$opus/library/Aerie")
|
||||
- load the package dependencies ($opus/library/Aerie/opus-Aerie-depends.js)
|
||||
for all others:
|
||||
- load the resources
|
||||
*/
|
||||
_depend: function(inPath) {
|
||||
var tag, path = opus.path.rewrite(inPath);
|
||||
if (path.slice(-3) == "css") {
|
||||
// css
|
||||
tag = '<link href="' + path + '" media="screen" rel="stylesheet" type="text/css" />';
|
||||
//console.log("(css): " + path);
|
||||
} else if (path.slice(-2) == "js") {
|
||||
// js
|
||||
//console.log("(js): " + path);
|
||||
} else {
|
||||
// package
|
||||
// must encoded like so:
|
||||
// [folder]/[name of package without extension]
|
||||
var parts = path.split("/");
|
||||
var name = parts.pop();
|
||||
var folder = parts.join("/") + (parts.length ? "/" : "");
|
||||
opus.paths[name] = folder;
|
||||
//console.log("make alias: " + name + ": " + folder);
|
||||
path = folder + name + "-depends.js";
|
||||
//console.log("(depends): " + path);
|
||||
}
|
||||
if (!tag) {
|
||||
tag = '<script src="' + path + '" type="text/javascript" x-mojo-version="1"></script>';
|
||||
}
|
||||
document.write(tag);
|
||||
},
|
||||
depends: function(inDepends) {
|
||||
//console.info("processing dependencies");
|
||||
var d;
|
||||
if (d = inDepends.paths) {
|
||||
for (var n in d) {
|
||||
opus.paths[n] = d[n];
|
||||
}
|
||||
}
|
||||
if (d = inDepends.nobuild) {
|
||||
for (i=0; b=d[i]; i++) {
|
||||
this._depend(b);
|
||||
}
|
||||
}
|
||||
if (d = inDepends.build) {
|
||||
for (var i=0, b; b=d[i]; i++) {
|
||||
this._depend(b);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
(function(){
|
||||
if (!opus.paths.opus) {
|
||||
opus.paths.opus = opus.locateScript("bootloader.js");
|
||||
}
|
||||
opus.args = opus.argify(location.search);
|
||||
var app = opus.args.app || (opus.args.debug ? "depends.js" : "app.js");
|
||||
document.write('<script src="' + app + '" onerror="opus._tryDebug()" type="text/javascript"></script>');
|
||||
opus._tryDebug = function() {
|
||||
app = "depends.js";
|
||||
document.write('<script src="' + app + '" type="text/javascript"></script>');
|
||||
};
|
||||
})();
|
||||
4
share-a-bike/ares_version.json
Normal file
4
share-a-bike/ares_version.json
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"Mojo": "0.1.0 (311)",
|
||||
"Ares": "1.0.4"
|
||||
}
|
||||
3
share-a-bike/framework_config.json
Normal file
3
share-a-bike/framework_config.json
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"logLevel": 99
|
||||
}
|
||||
BIN
share-a-bike/icon.png
Normal file
BIN
share-a-bike/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.2 KiB |
BIN
share-a-bike/images/Sharrow-BG.jpg
Normal file
BIN
share-a-bike/images/Sharrow-BG.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 51 KiB |
12
share-a-bike/index.html
Normal file
12
share-a-bike/index.html
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
|
||||
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
||||
<head>
|
||||
<title>Share-a-Bike</title>
|
||||
<link href="stylesheets/style.css" media="screen" rel="stylesheet" type="text/css" />
|
||||
<script src="ares.js" type="text/javascript"></script>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
||||
13
share-a-bike/sources.json
Normal file
13
share-a-bike/sources.json
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
[
|
||||
{
|
||||
"source": "app\/assistants\/stage-assistant.js"
|
||||
},
|
||||
{
|
||||
"source": "app\/views\/main\/main-chrome.js",
|
||||
"scenes": "main"
|
||||
},
|
||||
{
|
||||
"source": "app\/assistants\/main-assistant.js",
|
||||
"scenes": "main"
|
||||
}
|
||||
]
|
||||
25
share-a-bike/stylesheets/style.css
Normal file
25
share-a-bike/stylesheets/style.css
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
.kiosk_left_col {
|
||||
float: left;
|
||||
}
|
||||
.kiosk_right_col {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.kiosk_name {
|
||||
font-weight: bold;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
.kiosk_distance {
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
.kiosk_address {
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
.kiosk_availability {
|
||||
font-size: 0.8em;
|
||||
font-weight: bold;
|
||||
text-align: right;
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue