veyron/examples/pipetobrower: Final clean up for P2B
- Using envyor for proxy and namespace
- UI fixes for Chrome 36 beta
- an ugly hack to get around identity and CORS until we have proper auth
- small UI perf improvements
Change-Id: I135f0e1e361ed619b079e251e7cb2e8dd9cb926c
diff --git a/examples/pipetobrowser/Makefile b/examples/pipetobrowser/Makefile
index e941562..1d3f652 100644
--- a/examples/pipetobrowser/Makefile
+++ b/examples/pipetobrowser/Makefile
@@ -1,12 +1,11 @@
-PATH:=$(PATH):node_modules/.bin
-PATH:=$(PATH):$(VEYRON_ROOT)/environment/cout/node/bin
-PATH:=$(PATH):$(VEYRON_ROOT)/veyron/go/bin
+PATH:=$(VEYRON_ROOT)/environment/cout/node/bin:$(PATH)
+PATH:=$(VEYRON_ROOT)/veyron/go/bin:$(PATH)
+PATH:=node_modules/.bin:../node_modules/.bin:$(PATH)
-VEYRON_PROXY_PORT=5164
-VEYRON_MOUNTTABLE_PORT=5167
-VEYRON_PROXY_ADDR=127.0.0.1:$(VEYRON_PROXY_PORT)
-VEYRON_WSPR_PORT=5165
-VEYRON_IDENTITY_PORT=5163
+VEYRON_PROXY_ADDR=proxy.envyor.com:8100
+VEYRON_WSPR_PORT=7776
+HTTP_PORT=8080
+NAMESPACE_ROOT=/proxy.envyor.com:8101
VEYRON_JS_API=$(VEYRON_ROOT)/veyron/javascript/api
VEYRON_BUILD_SCRIPT=$(VEYRON_ROOT)/veyron/scripts/build/go
VEYRON_IDENTITY_PATH=/tmp/p2b_identity
@@ -28,6 +27,7 @@
npm prune
npm install
touch node_modules
+ export
# Build and copies Veyron from local source
browser/third-party/veyron: $(VEYRON_JS_API)
@@ -57,9 +57,18 @@
cd browser; \
vulcanize -o index.html app.html
-# Serve the files
+# Serve
start:
- serve browser/. --port 8080 --compress
+ identity --name=veyron_p2b_identity > $(VEYRON_IDENTITY_PATH)
+ export VEYRON_IDENTITY=$(VEYRON_IDENTITY_PATH) ; \
+ export NAMESPACE_ROOT=$(NAMESPACE_ROOT); \
+ wsprd --v=1 -alsologtostderr=true -vproxy=$(VEYRON_PROXY_ADDR) --port $(VEYRON_WSPR_PORT) & \
+ serve browser/. --port $(HTTP_PORT) --compress &
+
+# Stop serving
+stop:
+ pkill wsprd || true
+ lsof -i:$(HTTP_PORT) | grep node | awk '{printf "%s\n",$$2}' | xargs --no-run-if-empty kill
# Continuously watch for changes to .js, .html or .css files.
# Rebundle the appropriate file (build.js and/or index.html) when local files change
@@ -67,28 +76,10 @@
watch -n 1 make
# Clean all build artifacts
-clean:
+clean: stop
rm -rf browser/third-party
rm -rf node_modules
rm -f browser/index.html
rm -f browser/build.js
-# Deploys Veyron daemons
-daemons:
- identity --name=veyron_p2b_identity > $(VEYRON_IDENTITY_PATH)
- export VEYRON_IDENTITY=$(VEYRON_IDENTITY_PATH) ; \
- identityd --address=:$(VEYRON_IDENTITY_PORT) & \
- mounttabled --address=:$(VEYRON_MOUNTTABLE_PORT) & \
- export NAMESPACE_ROOT=/localhost:$(VEYRON_MOUNTTABLE_PORT) ; \
- proxyd -address=$(VEYRON_PROXY_ADDR) & \
- wsprd --v=1 -logtostderr=true -vproxy=$(VEYRON_PROXY_ADDR) --port $(VEYRON_WSPR_PORT) & \
-
-# Kills the running daemons
-clean-daemons:
- kill `lsof -t -i:$(VEYRON_MOUNTTABLE_PORT)`; \
- kill `lsof -t -i:$(VEYRON_IDENTITY_PORT)`; \
- kill `lsof -t -i:$(VEYRON_WSPR_PORT)`; \
- kill `lsof -t -i:$(VEYRON_PROXY_PORT)`; \
- kill `lsof -t -i:$(VEYRON_STORE_PORT)`
-
-.PHONY: start clean daemons clean-daemons watch
\ No newline at end of file
+.PHONY: start stop clean watch
\ No newline at end of file
diff --git a/examples/pipetobrowser/README.md b/examples/pipetobrowser/README.md
index 2eedc9e..8a38312 100644
--- a/examples/pipetobrowser/README.md
+++ b/examples/pipetobrowser/README.md
@@ -24,11 +24,15 @@
``
To run
``
-make daemons #Runs the required Veyron daemons
make start #Starts a web server at 8080
``
and then navigate to http://localhost:8080
+To stop
+``
+make stop
+``
+
To clean
``
make clean
diff --git a/examples/pipetobrowser/browser/app.html b/examples/pipetobrowser/browser/app.html
index d6dfbd6..d4d7597 100644
--- a/examples/pipetobrowser/browser/app.html
+++ b/examples/pipetobrowser/browser/app.html
@@ -15,6 +15,7 @@
<script src="third-party/traceur-runtime@0.0.49.js"></script>
<script src="third-party/system@0.6.js"></script>
<script src="config.js"></script>
+ <script src="shame.js"></script>
<script src="build.js"></script>
<link rel="import" href="views/page/component.html"/>
diff --git a/examples/pipetobrowser/browser/config/config.js b/examples/pipetobrowser/browser/config/config.js
index de4cd2e..ce740a4 100644
--- a/examples/pipetobrowser/browser/config/config.js
+++ b/examples/pipetobrowser/browser/config/config.js
@@ -6,10 +6,9 @@
export var config = {
veyron: {
- identityServer: 'http://localhost:5163/random/',
- proxy: 'http://localhost:5165',
+ proxy: 'http://localhost:7776',
logLevel: veyronLogLevels.INFO
},
- namespaceRoot: '/localhost:5167',
+ namespaceRoot: '/proxy.envyor.com:8101',
publishNamePrefix: 'google/p2b'
}
\ No newline at end of file
diff --git a/examples/pipetobrowser/browser/libs/ui-components/data-grid/grid/component.html b/examples/pipetobrowser/browser/libs/ui-components/data-grid/grid/component.html
index 974cc97..4f555ab 100644
--- a/examples/pipetobrowser/browser/libs/ui-components/data-grid/grid/component.html
+++ b/examples/pipetobrowser/browser/libs/ui-components/data-grid/grid/component.html
@@ -172,10 +172,10 @@
// private property fields
this.columns = [];
- this.shouldRefetchData = true;
this.pageNumber = 1;
this.dataSource = null;
this.cachedDataSourceResult = [];
+ this.dataSourceResult = [];
this.gridState = {
sort: {
key: '',
@@ -308,7 +308,7 @@
if (goBackToPageOne) {
self.pageNumber = 1;
}
- self.shouldRefetchData = true;
+ self.updateDataSource();
});
},
@@ -391,9 +391,9 @@
* Only fetches data if scheduled to do so
* @private
*/
- get dataSourceResult() {
- if (!this.shouldRefetchData || !this.dataSource) {
- return this.cachedDataSourceResult;
+ updateDataSource: function() {
+ if (!this.dataSource) {
+ return;
}
// fetch the data
@@ -417,9 +417,7 @@
var endIndex = startIndex + this.pageSize;
this.cachedDataSourceResult = this.cachedDataSourceResult.slice(startIndex, endIndex);
- this.shouldRefetchData = false;
-
- return this.cachedDataSourceResult;
+ this.dataSourceResult = this.cachedDataSourceResult;
},
/*
diff --git a/examples/pipetobrowser/browser/pipe-viewers/builtin/vlog/plugin.js b/examples/pipetobrowser/browser/pipe-viewers/builtin/vlog/plugin.js
index db749ff..d011cfd 100644
--- a/examples/pipetobrowser/browser/pipe-viewers/builtin/vlog/plugin.js
+++ b/examples/pipetobrowser/browser/pipe-viewers/builtin/vlog/plugin.js
@@ -23,18 +23,27 @@
play(stream) {
stream.setEncoding('utf8');
+ var logView = document.createElement('p2b-plugin-vlog');
+ var newData = true;
+ var refreshGrid = function() {
+ requestAnimationFrame(() => {
+ if( newData ) {
+ logView.refreshGrid();
+ newData = false;
+ }
+ refreshGrid();
+ });
+ };
+ refreshGrid();
+
// split by new line
stream = stream.pipe(streamUtil.split(/\r?\n/));
- var logView = document.createElement('p2b-plugin-vlog');
// create a new data source from the stream and set it.
logView.dataSource = new vLogDataSource(
stream,
function onNewItem(item) {
- // also refresh the grid when new data comes in.
- // grid component batches requests and refreshes UI on the next animation frame.
- logView.refreshGrid();
-
+ newData = true;
// add additional, UI related properties to the item
addAdditionalUIProperties(item);
},
diff --git a/examples/pipetobrowser/browser/shame.js b/examples/pipetobrowser/browser/shame.js
new file mode 100644
index 0000000..10cb74f
--- /dev/null
+++ b/examples/pipetobrowser/browser/shame.js
@@ -0,0 +1,5 @@
+//TODO(aghassemi) Ugly random identity hack until we have proper identity
+var id= '_4EEGgFCAP-DNBoBQwEudmV5cm9uL3J1bnRpbWVzL2dvb2dsZS9zZWN1cml0eS5jaGFpblByaXZhdGVJRAD_hUIYAQIBRAEIUHVibGljSUQAAQQBBlNlY3JldAABJHZleXJvbjIvc2VjdXJpdHkvd2lyZS5DaGFpblByaXZhdGVJRAD_hzoYAQEBRQEMQ2VydGlmaWNhdGVzAAEjdmV5cm9uMi9zZWN1cml0eS93aXJlLkNoYWluUHVibGljSUQA_4kEEgFGAP-LWBgBBAEDAQROYW1lAAFHAQlQdWJsaWNLZXkAAUgBB0NhdmVhdHMAAUkBCVNpZ25hdHVyZQABIXZleXJvbjIvc2VjdXJpdHkvd2lyZS5DZXJ0aWZpY2F0ZQD_jTYYAQIBSgEFQ3VydmUAAQQBAlhZAAEfdmV5cm9uMi9zZWN1cml0eS93aXJlLlB1YmxpY0tleQD_kyQQATIBHnZleXJvbjIvc2VjdXJpdHkvd2lyZS5LZXlDdXJ2ZQD_jwQSAUsA_5U4GAECAUwBB1NlcnZpY2UAAQQBBUJ5dGVzAAEcdmV5cm9uMi9zZWN1cml0eS93aXJlLkNhdmVhdAD_lycQAQMBIXZleXJvbjIvc2VjdXJpdHkuUHJpbmNpcGFsUGF0dGVybgD_kTEYAQIBBAEBUgABBAEBUwABH3ZleXJvbjIvc2VjdXJpdHkvd2lyZS5TaWduYXR1cmUA_4L-Ae4BAwEBAgETdmV5cm9uX3AyYl9pZGVudGl0eQECQQSX1W2szGUlXbia28KqD7tzpVIHappQOKvixbijDauOdV6YrygMAmky5vLetcPzmf2Kz4QQfjf-_XpaiH2vJ3SFAAIBIEQgGWkP4DbWtZkKobftfkqE7-hPhldI1E7WM-9NHqwEASB_4e5WDr35ffYa16HkDm2pxoICFc2HemwTXgl-n5u1iQAAAQpyYW5kb206NTQwAQJBBPDpM7apzfyfgANbP3HKIo_vCTc2Jq4KbmHE8_OGjF7hkS5Do4nh6_Q-SBB1nnqSkpslgBU1kGXUCeh0P0Jza3kAAQEBASoB_4P_gQQaAUIA_4NAGAECAUMBCUlzc3VlVGltZQABQwEKRXhwaXJ5VGltZQABHXZleXJvbi9zZWN1cml0eS9jYXZlYXQuRXhwaXJ5AP-FDxABBAEJdGltZS5UaW1lAP-CJAEBDwEAAAAOy1ic8jYxcFX-XAEPAQAAAA7LWKsCNjFwVf5cAAABASBOr9ic8ql0ZSmb3HA1Z3yEJHmt62SqXHjrDT99E8buFwEgFjrqh7PJdSs8hQxl3eKyYhGfvCcULfzX0mrWBp-k_v0AAAABIML_mzA_ofWsFLMlvFukoE6vkZBJh3b7rOIxFK0HENPcAA==';
+Veyron.prototype._getIdentityPromise = function() {
+ return Promise.resolve(id);
+};
diff --git a/examples/pipetobrowser/browser/views/loading/component.html b/examples/pipetobrowser/browser/views/loading/component.html
index 77e5a29..b6db519 100644
--- a/examples/pipetobrowser/browser/views/loading/component.html
+++ b/examples/pipetobrowser/browser/views/loading/component.html
@@ -3,7 +3,7 @@
<polymer-element name="p2b-loading">
<template>
<link rel="stylesheet" href="component.css">
- <img class="spinner" src="/libs/ui-components/common/spinner.gif" alt="Loading"/>
+ <img class="spinner" src="../../libs/ui-components/common/spinner.gif" alt="Loading"/>
</template>
<script>
Polymer('p2b-loading', {
diff --git a/examples/pipetobrowser/browser/views/page/component.html b/examples/pipetobrowser/browser/views/page/component.html
index f1ab37c..4e5b72d 100644
--- a/examples/pipetobrowser/browser/views/page/component.html
+++ b/examples/pipetobrowser/browser/views/page/component.html
@@ -47,7 +47,7 @@
<core-header-panel main>
<core-toolbar >
<paper-icon-button icon="menu" on-click="{{ toggleDrawer }}"></paper-icon-button>
- <h2>{{ title }}</h2>
+ <h2>{{ pageTitle }}</h2>
</core-toolbar>
<core-selector id="subPagesSelector" valueattr="key" selected="{{ selectedSubPageKey }}">
@@ -66,7 +66,7 @@
* Title of the page
* @type {string}
*/
- title: '',
+ pageTitle: '',
/*
* SubPageItem represents top level sub pages that have a sidebar navigation link
diff --git a/examples/pipetobrowser/browser/views/page/view.js b/examples/pipetobrowser/browser/views/page/view.js
index b2e7aa0..e946181 100644
--- a/examples/pipetobrowser/browser/views/page/view.js
+++ b/examples/pipetobrowser/browser/views/page/view.js
@@ -43,7 +43,7 @@
* @type {string}
*/
set title(title) {
- this.element.title = title;
+ this.element.pageTitle = title;
}
}
diff --git a/examples/pipetobrowser/browser/views/pipes/component.html b/examples/pipetobrowser/browser/views/pipes/component.html
index c877519..a2a2286 100644
--- a/examples/pipetobrowser/browser/views/pipes/component.html
+++ b/examples/pipetobrowser/browser/views/pipes/component.html
@@ -47,13 +47,8 @@
*/
selectionHistoryStack: [],
- /*
- * Number of open tabs
- * @type {integer}
- * @private
- */
- get numTabs() {
- return Object.keys(this.pipeTabs).length;
+ ready: function() {
+ this.numTabs = 0
},
/*
@@ -73,7 +68,7 @@
// Create a tab toolbar and assign the close handler
var tabToolbar = document.createElement('p2b-pipes-tab-toolbar');
- tabToolbar.title = name;
+ tabToolbar.toolbarTitle = name;
tabToolbar.addEventListener('close-action', function() {
self.removeTab(key);
if (onClose) {
@@ -101,6 +96,8 @@
tabToolbar: tabToolbar
};
+ this.numTabs++;
+
this.selectedTabKey = key;
requestAnimationFrame(function() {
self.$.tabs.appendChild(tab);
@@ -137,6 +134,7 @@
// Delete tab from the map
delete this.pipeTabs[key];
+ this.numTabs--;
// Select an existing tab from previous selection history
var toSelect = this.selectionHistoryStack.pop();
@@ -163,7 +161,7 @@
tabContent.replaceTabContent(newEl);
if (newName) {
this.pipeTabs[key].tab.textContent = newName;
- this.pipeTabs[key].tabToolbar.title = newName;
+ this.pipeTabs[key].tabToolbar.toolbarTitle = newName;
}
},
diff --git a/examples/pipetobrowser/browser/views/pipes/tab-toolbar/component.html b/examples/pipetobrowser/browser/views/pipes/tab-toolbar/component.html
index 25799ef..3514b67 100644
--- a/examples/pipetobrowser/browser/views/pipes/tab-toolbar/component.html
+++ b/examples/pipetobrowser/browser/views/pipes/tab-toolbar/component.html
@@ -6,7 +6,7 @@
<link rel="stylesheet" href="component.css">
<core-toolbar>
<span flex>
- {{ title }}
+ {{ toolbarTitle }}
</span>
<span id="customActions"></span>
<paper-icon-button id="fullscreenIcon" icon="fullscreen" on-click="{{ fireFullscreenAction }}"></paper-icon-button>
@@ -20,7 +20,7 @@
* Title of the toolbar
* @type {string}
*/
- title: '',
+ toolbarTitle: '',
/*
* Event that's fired when close action of the toolbar is triggered
diff --git a/examples/pipetobrowser/browser/views/status/component.html b/examples/pipetobrowser/browser/views/status/component.html
index 8362866..14143c1 100644
--- a/examples/pipetobrowser/browser/views/status/component.html
+++ b/examples/pipetobrowser/browser/views/status/component.html
@@ -30,6 +30,19 @@
System.import('libs/utils/formatting').then(function(formatter) {
Polymer('p2b-status', {
+ ready: function() {
+ this.runningSince = 'just now';
+ },
+
+ attached: function() {
+ // Update the running since every second.
+ this.runningSinceIntervalId = setInterval(this.updateRunningSince.bind(this), 1000);
+ },
+
+ detached: function() {
+ clearInterval(this.runningSinceIntervalId);
+ },
+
/*
* Dynamic binding for the state of publishing p2b service.
* Any changes to this object will be reflected in the UI automatically
@@ -50,9 +63,9 @@
* @private
* @type {string}
*/
- get runningSince() {
+ updateRunningSince: function() {
if (!this.serviceState) { return; }
- return formatter.formatRelativeTime(this.serviceState.date);
+ this.runningSince = formatter.formatRelativeTime(this.serviceState.date);
},
/*
diff --git a/examples/pipetobrowser/p2b/main.go b/examples/pipetobrowser/p2b/main.go
index 71c2cfb..1e47acb 100644
--- a/examples/pipetobrowser/p2b/main.go
+++ b/examples/pipetobrowser/p2b/main.go
@@ -58,7 +58,7 @@
func main() {
flag.Usage = Usage
- runtime := rt.Init()
+ runtime := rt.Init(veyron2.NamespaceRoots{"/proxy.envyor.com:8101"})
log := runtime.Logger()
if flag.NArg() != 1 {
diff --git a/examples/pipetobrowser/package.json b/examples/pipetobrowser/package.json
index 8c76a73..add9381 100644
--- a/examples/pipetobrowser/package.json
+++ b/examples/pipetobrowser/package.json
@@ -6,6 +6,6 @@
"jspm": "~0.6.7",
"vulcanize": "~0.3.0",
"serve": "~1.4.0",
- "bower": "~1.3.7"
+ "bower": "~1.3.8"
}
-}
+}
\ No newline at end of file