You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@climate.apache.org by jo...@apache.org on 2014/05/09 04:03:23 UTC
[14/51] [abbrv] [partial] Adding Jinwon's custom RCMET
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/app/partials/.svn/text-base/selectObservation.html.svn-base
----------------------------------------------------------------------
diff --git a/src/main/ui/app/partials/.svn/text-base/selectObservation.html.svn-base b/src/main/ui/app/partials/.svn/text-base/selectObservation.html.svn-base
new file mode 100755
index 0000000..6f72cb5
--- /dev/null
+++ b/src/main/ui/app/partials/.svn/text-base/selectObservation.html.svn-base
@@ -0,0 +1,44 @@
+<ul class="nav nav-pills">
+ <li class="active"><a href="#/obs">Local File</a></li>
+ <li><a href="#/rcmed">RCMED</a></li>
+ <li class="disabled"><a href="#/esg">ESG</a></li>
+ <li class="pull-right">Queued Datasets: {{datasetCount.length}}</li>
+</ul>
+
+<form class="form-inline" autocomplete="off">
+ <input id="observationFileInput" predictive-file-browser-input ng-model="filePathInput" type="text" class="input-xlarge" autocomplete="off" />
+ <button class="btn" ng-click="uploadLocalFile()" ng-disabled="shouldDisableLoadButton()">
+ <div ng-hide="loadingFile">Parse File</div>
+ <div ng-show="loadingFile"><i class="icon-spinner icon-spin"></i></div>
+ </button>
+</form>
+
+<div class="row">
+ <div class="span2 text-center">
+ Evaluation Variable
+ </div>
+ <div class="span3">
+ <select ng-model="paramSelect" ng-options="param for param in params"></select>
+ </div>
+ <div class="span2 text-center">
+ Latitude Variable
+ </div>
+ <div class="span3">
+ <select ng-model="latsSelect" ng-options="lat for lat in lats"></select>
+ </div>
+ <div class="span2 text-center">
+ Longitude Variable
+ </div>
+ <div class="span3">
+ <select ng-model="lonsSelect" ng-options="lon for lon in lons"></select>
+ </div>
+ <div class="span2 text-center">
+ Date/Time Variable
+ </div>
+ <div class="span3">
+ <select ng-model="timeSelect" ng-options="time for time in times"></select>
+ </div>
+</div>
+
+<button class="btn pull-left" ng-click="addDataSet()">Add Dataset</button>
+<div class="pull-left small-alert" ng-show="fileAdded">Successfully added dataset...</div>
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/app/partials/.svn/text-base/selectRcmed.html.svn-base
----------------------------------------------------------------------
diff --git a/src/main/ui/app/partials/.svn/text-base/selectRcmed.html.svn-base b/src/main/ui/app/partials/.svn/text-base/selectRcmed.html.svn-base
new file mode 100755
index 0000000..dcac499
--- /dev/null
+++ b/src/main/ui/app/partials/.svn/text-base/selectRcmed.html.svn-base
@@ -0,0 +1,30 @@
+<ul class="nav nav-pills">
+ <li><a href="#/obs">Local File</a></li>
+ <li class="active"><a href="#/rcmed">RCMED</a></li>
+ <li class="disabled"><a href="#/esg">ESG</a></li>
+ <li class="pull-right">Queued Datasets: {{datasetCount.length}}</li>
+</ul>
+
+<div class="row">
+ <div class="span5">
+ Select the RCMED dataset that you would like use.
+ </div>
+</div>
+<div class="row">
+ <div class="span4">
+ <select ng-change="dataSelectUpdated()" class="span5" ng-model="datasetSelection" ng-options="obs as obs.longname for obs in availableObs"></select>
+ </div>
+</div>
+<div class="row">
+ <div class="span5">
+ Select the dataset parameter that you would like to test.
+ </div>
+</div>
+<div class="row">
+ <div class="span4">
+ <select class="span3" ng-model="parameterSelection" ng-options="param as param.shortname for param in retrievedObsParams"></select>
+ </div>
+</div>
+
+<button class="btn pull-left" ng-click="addObservation()">Add Observation</button>
+<div class="pull-left small-alert" ng-show="fileAdded">Successfully added dataset...</div>
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/app/partials/modelSelect.html
----------------------------------------------------------------------
diff --git a/src/main/ui/app/partials/modelSelect.html b/src/main/ui/app/partials/modelSelect.html
new file mode 100755
index 0000000..49a7dec
--- /dev/null
+++ b/src/main/ui/app/partials/modelSelect.html
@@ -0,0 +1,67 @@
+<div class="container">
+ <div class="row">
+ <div class="span10 offset1 columns">
+ <div class="row">
+ <div class="span10">
+ <center>
+ <form id="modelSelectorForm">
+ <input type="file" name="modelSelector">
+ </form>
+ </center>
+ </div>
+ </div>
+ <div class="row">
+ <div class="span10 offset2">
+ <form class="form-horizontal" id="parameterSelectorForm">
+ <div class="control-group">
+ <label class="control-label" for="paramSelect">Parameter Value</label>
+ <div class="controls">
+ <select id="paramSelect">
+ <option ng-repeat="param in modelParameters">
+ {{param.text}}
+ </option>
+ </select>
+ </div>
+ </div>
+ <div class="control-group">
+ <label class="control-label" for="latSelect">Latitude Variable</label>
+ <div class="controls">
+ <select id="latSelect">
+ <option ng-repeat="lat in latVariables">
+ {{lat.text}}
+ </option>
+ </select>
+ </div>
+ </div>
+ <div class="control-group">
+ <label class="control-label" for="lonSelect">Longitude Variable</label>
+ <div class"controls">
+ <select id="lonSelect">
+ <option ng-repeat="lon in lonVariables">
+ {{lon.text}}
+ </option>
+ </select>
+ </div>
+ </div>
+ <div class="control-group">
+ <label class="control-label" for="dateTimeSelect">Date/Time Variable</label>
+ <div class="controls">
+ <select id="dateTimeSelect">
+ <option ng-repeat="dateTime in dateTimeVariables">
+ {{dateTime.text}}
+ </option>
+ </select>
+ </div>
+ </div>
+ <div class="control-group">
+ <div class="controls">
+ <button type="submit" class="btn btn-warn">Cancel</button>
+ <button type="submit" class="btn">Add Model</button>
+ </div>
+ </div>
+ </form>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/app/partials/partial1.html
----------------------------------------------------------------------
diff --git a/src/main/ui/app/partials/partial1.html b/src/main/ui/app/partials/partial1.html
new file mode 100755
index 0000000..89459a6
--- /dev/null
+++ b/src/main/ui/app/partials/partial1.html
@@ -0,0 +1 @@
+<p>This is the partial for view 1.</p>
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/app/partials/partial2.html
----------------------------------------------------------------------
diff --git a/src/main/ui/app/partials/partial2.html b/src/main/ui/app/partials/partial2.html
new file mode 100755
index 0000000..b6503ee
--- /dev/null
+++ b/src/main/ui/app/partials/partial2.html
@@ -0,0 +1,5 @@
+<p>This is the partial for view 2.</p>
+<p>
+ Showing of 'interpolate' filter:
+ {{ 'Current version is v%VERSION%.' | interpolate }}
+</p>
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/app/partials/selectObservation.html
----------------------------------------------------------------------
diff --git a/src/main/ui/app/partials/selectObservation.html b/src/main/ui/app/partials/selectObservation.html
new file mode 100755
index 0000000..6f72cb5
--- /dev/null
+++ b/src/main/ui/app/partials/selectObservation.html
@@ -0,0 +1,44 @@
+<ul class="nav nav-pills">
+ <li class="active"><a href="#/obs">Local File</a></li>
+ <li><a href="#/rcmed">RCMED</a></li>
+ <li class="disabled"><a href="#/esg">ESG</a></li>
+ <li class="pull-right">Queued Datasets: {{datasetCount.length}}</li>
+</ul>
+
+<form class="form-inline" autocomplete="off">
+ <input id="observationFileInput" predictive-file-browser-input ng-model="filePathInput" type="text" class="input-xlarge" autocomplete="off" />
+ <button class="btn" ng-click="uploadLocalFile()" ng-disabled="shouldDisableLoadButton()">
+ <div ng-hide="loadingFile">Parse File</div>
+ <div ng-show="loadingFile"><i class="icon-spinner icon-spin"></i></div>
+ </button>
+</form>
+
+<div class="row">
+ <div class="span2 text-center">
+ Evaluation Variable
+ </div>
+ <div class="span3">
+ <select ng-model="paramSelect" ng-options="param for param in params"></select>
+ </div>
+ <div class="span2 text-center">
+ Latitude Variable
+ </div>
+ <div class="span3">
+ <select ng-model="latsSelect" ng-options="lat for lat in lats"></select>
+ </div>
+ <div class="span2 text-center">
+ Longitude Variable
+ </div>
+ <div class="span3">
+ <select ng-model="lonsSelect" ng-options="lon for lon in lons"></select>
+ </div>
+ <div class="span2 text-center">
+ Date/Time Variable
+ </div>
+ <div class="span3">
+ <select ng-model="timeSelect" ng-options="time for time in times"></select>
+ </div>
+</div>
+
+<button class="btn pull-left" ng-click="addDataSet()">Add Dataset</button>
+<div class="pull-left small-alert" ng-show="fileAdded">Successfully added dataset...</div>
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/app/partials/selectRcmed.html
----------------------------------------------------------------------
diff --git a/src/main/ui/app/partials/selectRcmed.html b/src/main/ui/app/partials/selectRcmed.html
new file mode 100755
index 0000000..dcac499
--- /dev/null
+++ b/src/main/ui/app/partials/selectRcmed.html
@@ -0,0 +1,30 @@
+<ul class="nav nav-pills">
+ <li><a href="#/obs">Local File</a></li>
+ <li class="active"><a href="#/rcmed">RCMED</a></li>
+ <li class="disabled"><a href="#/esg">ESG</a></li>
+ <li class="pull-right">Queued Datasets: {{datasetCount.length}}</li>
+</ul>
+
+<div class="row">
+ <div class="span5">
+ Select the RCMED dataset that you would like use.
+ </div>
+</div>
+<div class="row">
+ <div class="span4">
+ <select ng-change="dataSelectUpdated()" class="span5" ng-model="datasetSelection" ng-options="obs as obs.longname for obs in availableObs"></select>
+ </div>
+</div>
+<div class="row">
+ <div class="span5">
+ Select the dataset parameter that you would like to test.
+ </div>
+</div>
+<div class="row">
+ <div class="span4">
+ <select class="span3" ng-model="parameterSelection" ng-options="param as param.shortname for param in retrievedObsParams"></select>
+ </div>
+</div>
+
+<button class="btn pull-left" ng-click="addObservation()">Add Observation</button>
+<div class="pull-left small-alert" ng-show="fileAdded">Successfully added dataset...</div>
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/config/.svn/all-wcprops
----------------------------------------------------------------------
diff --git a/src/main/ui/config/.svn/all-wcprops b/src/main/ui/config/.svn/all-wcprops
new file mode 100755
index 0000000..e78ad30
--- /dev/null
+++ b/src/main/ui/config/.svn/all-wcprops
@@ -0,0 +1,17 @@
+K 25
+svn:wc:ra_dav:version-url
+V 76
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/ui/config
+END
+testacular-e2e.conf.js
+K 25
+svn:wc:ra_dav:version-url
+V 99
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/ui/config/testacular-e2e.conf.js
+END
+testacular.conf.js
+K 25
+svn:wc:ra_dav:version-url
+V 95
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/ui/config/testacular.conf.js
+END
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/config/.svn/entries
----------------------------------------------------------------------
diff --git a/src/main/ui/config/.svn/entries b/src/main/ui/config/.svn/entries
new file mode 100755
index 0000000..ff777da
--- /dev/null
+++ b/src/main/ui/config/.svn/entries
@@ -0,0 +1,96 @@
+10
+
+dir
+1485921
+https://svn.apache.org/repos/asf/incubator/climate/trunk/rcmet/src/main/ui/config
+https://svn.apache.org/repos/asf
+
+
+
+2013-03-13T02:34:49.535183Z
+1475148
+mjjoyce
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+13f79535-47bb-0310-9956-ffa450edef68
+
+testacular-e2e.conf.js
+file
+
+
+
+
+2013-05-24T10:13:57.000000Z
+bac9ba3117ed4a65ba637b1736661052
+2013-03-13T02:34:30.834306Z
+1475137
+mjjoyce
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+283
+
+testacular.conf.js
+file
+
+
+
+
+2013-05-24T10:13:57.000000Z
+61f1d3a123c766a2a66554387197c2d5
+2013-03-13T02:34:49.535183Z
+1475148
+mjjoyce
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+405
+
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/config/.svn/prop-base/testacular-e2e.conf.js.svn-base
----------------------------------------------------------------------
diff --git a/src/main/ui/config/.svn/prop-base/testacular-e2e.conf.js.svn-base b/src/main/ui/config/.svn/prop-base/testacular-e2e.conf.js.svn-base
new file mode 100755
index 0000000..869ac71
--- /dev/null
+++ b/src/main/ui/config/.svn/prop-base/testacular-e2e.conf.js.svn-base
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/config/.svn/prop-base/testacular.conf.js.svn-base
----------------------------------------------------------------------
diff --git a/src/main/ui/config/.svn/prop-base/testacular.conf.js.svn-base b/src/main/ui/config/.svn/prop-base/testacular.conf.js.svn-base
new file mode 100755
index 0000000..869ac71
--- /dev/null
+++ b/src/main/ui/config/.svn/prop-base/testacular.conf.js.svn-base
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/config/.svn/text-base/testacular-e2e.conf.js.svn-base
----------------------------------------------------------------------
diff --git a/src/main/ui/config/.svn/text-base/testacular-e2e.conf.js.svn-base b/src/main/ui/config/.svn/text-base/testacular-e2e.conf.js.svn-base
new file mode 100755
index 0000000..51f51d2
--- /dev/null
+++ b/src/main/ui/config/.svn/text-base/testacular-e2e.conf.js.svn-base
@@ -0,0 +1,22 @@
+basePath = '../';
+
+files = [
+ ANGULAR_SCENARIO,
+ ANGULAR_SCENARIO_ADAPTER,
+ 'test/e2e/**/*.js'
+];
+
+autoWatch = false;
+
+browsers = ['Chrome'];
+
+singleRun = true;
+
+proxies = {
+ '/': 'http://localhost:8000/'
+};
+
+junitReporter = {
+ outputFile: 'test_out/e2e.xml',
+ suite: 'e2e'
+};
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/config/.svn/text-base/testacular.conf.js.svn-base
----------------------------------------------------------------------
diff --git a/src/main/ui/config/.svn/text-base/testacular.conf.js.svn-base b/src/main/ui/config/.svn/text-base/testacular.conf.js.svn-base
new file mode 100755
index 0000000..5dc0dae
--- /dev/null
+++ b/src/main/ui/config/.svn/text-base/testacular.conf.js.svn-base
@@ -0,0 +1,23 @@
+basePath = '../';
+
+files = [
+ JASMINE,
+ JASMINE_ADAPTER,
+ 'app/js/jquery-1.9.1.min.js',
+ 'app/js/bootstrap.js',
+ 'app/lib/angular/angular.js',
+ 'app/lib/angular/angular-*.js',
+ 'test/lib/angular/angular-mocks.js',
+ 'app/js/leaflet.js',
+ 'app/js/**/*.js',
+ 'test/unit/**/*.js'
+];
+
+autoWatch = true;
+
+browsers = ['Chrome'];
+
+junitReporter = {
+ outputFile: 'test_out/unit.xml',
+ suite: 'unit'
+};
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/config/testacular-e2e.conf.js
----------------------------------------------------------------------
diff --git a/src/main/ui/config/testacular-e2e.conf.js b/src/main/ui/config/testacular-e2e.conf.js
new file mode 100755
index 0000000..51f51d2
--- /dev/null
+++ b/src/main/ui/config/testacular-e2e.conf.js
@@ -0,0 +1,22 @@
+basePath = '../';
+
+files = [
+ ANGULAR_SCENARIO,
+ ANGULAR_SCENARIO_ADAPTER,
+ 'test/e2e/**/*.js'
+];
+
+autoWatch = false;
+
+browsers = ['Chrome'];
+
+singleRun = true;
+
+proxies = {
+ '/': 'http://localhost:8000/'
+};
+
+junitReporter = {
+ outputFile: 'test_out/e2e.xml',
+ suite: 'e2e'
+};
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/config/testacular.conf.js
----------------------------------------------------------------------
diff --git a/src/main/ui/config/testacular.conf.js b/src/main/ui/config/testacular.conf.js
new file mode 100755
index 0000000..5dc0dae
--- /dev/null
+++ b/src/main/ui/config/testacular.conf.js
@@ -0,0 +1,23 @@
+basePath = '../';
+
+files = [
+ JASMINE,
+ JASMINE_ADAPTER,
+ 'app/js/jquery-1.9.1.min.js',
+ 'app/js/bootstrap.js',
+ 'app/lib/angular/angular.js',
+ 'app/lib/angular/angular-*.js',
+ 'test/lib/angular/angular-mocks.js',
+ 'app/js/leaflet.js',
+ 'app/js/**/*.js',
+ 'test/unit/**/*.js'
+];
+
+autoWatch = true;
+
+browsers = ['Chrome'];
+
+junitReporter = {
+ outputFile: 'test_out/unit.xml',
+ suite: 'unit'
+};
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/logs/.svn/all-wcprops
----------------------------------------------------------------------
diff --git a/src/main/ui/logs/.svn/all-wcprops b/src/main/ui/logs/.svn/all-wcprops
new file mode 100755
index 0000000..db808ee
--- /dev/null
+++ b/src/main/ui/logs/.svn/all-wcprops
@@ -0,0 +1,5 @@
+K 25
+svn:wc:ra_dav:version-url
+V 74
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/ui/logs
+END
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/logs/.svn/entries
----------------------------------------------------------------------
diff --git a/src/main/ui/logs/.svn/entries b/src/main/ui/logs/.svn/entries
new file mode 100755
index 0000000..b179a80
--- /dev/null
+++ b/src/main/ui/logs/.svn/entries
@@ -0,0 +1,28 @@
+10
+
+dir
+1485921
+https://svn.apache.org/repos/asf/incubator/climate/trunk/rcmet/src/main/ui/logs
+https://svn.apache.org/repos/asf
+
+
+
+2013-03-13T02:34:38.209785Z
+1475139
+mjjoyce
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+13f79535-47bb-0310-9956-ffa450edef68
+
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/scripts/.svn/all-wcprops
----------------------------------------------------------------------
diff --git a/src/main/ui/scripts/.svn/all-wcprops b/src/main/ui/scripts/.svn/all-wcprops
new file mode 100755
index 0000000..360f92f
--- /dev/null
+++ b/src/main/ui/scripts/.svn/all-wcprops
@@ -0,0 +1,53 @@
+K 25
+svn:wc:ra_dav:version-url
+V 77
+/repos/asf/!svn/ver/1480068/incubator/climate/trunk/rcmet/src/main/ui/scripts
+END
+testacular-e2e.conf.js
+K 25
+svn:wc:ra_dav:version-url
+V 100
+/repos/asf/!svn/ver/1480068/incubator/climate/trunk/rcmet/src/main/ui/scripts/testacular-e2e.conf.js
+END
+e2e-test.sh
+K 25
+svn:wc:ra_dav:version-url
+V 89
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/ui/scripts/e2e-test.sh
+END
+test.bat
+K 25
+svn:wc:ra_dav:version-url
+V 86
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/ui/scripts/test.bat
+END
+testacular.conf.js
+K 25
+svn:wc:ra_dav:version-url
+V 96
+/repos/asf/!svn/ver/1480068/incubator/climate/trunk/rcmet/src/main/ui/scripts/testacular.conf.js
+END
+test.sh
+K 25
+svn:wc:ra_dav:version-url
+V 85
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/ui/scripts/test.sh
+END
+watchr.rb
+K 25
+svn:wc:ra_dav:version-url
+V 87
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/ui/scripts/watchr.rb
+END
+web-server.js
+K 25
+svn:wc:ra_dav:version-url
+V 91
+/repos/asf/!svn/ver/1480068/incubator/climate/trunk/rcmet/src/main/ui/scripts/web-server.js
+END
+e2e-test.bat
+K 25
+svn:wc:ra_dav:version-url
+V 90
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/ui/scripts/e2e-test.bat
+END
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/scripts/.svn/entries
----------------------------------------------------------------------
diff --git a/src/main/ui/scripts/.svn/entries b/src/main/ui/scripts/.svn/entries
new file mode 100755
index 0000000..e10c6d1
--- /dev/null
+++ b/src/main/ui/scripts/.svn/entries
@@ -0,0 +1,300 @@
+10
+
+dir
+1485921
+https://svn.apache.org/repos/asf/incubator/climate/trunk/rcmet/src/main/ui/scripts
+https://svn.apache.org/repos/asf
+
+
+
+2013-05-07T20:50:17.582309Z
+1480068
+joyce
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+13f79535-47bb-0310-9956-ffa450edef68
+
+testacular-e2e.conf.js
+file
+
+
+
+
+2013-05-24T10:13:58.000000Z
+bac9ba3117ed4a65ba637b1736661052
+2013-05-07T20:50:17.582309Z
+1480068
+joyce
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+283
+
+e2e-test.sh
+file
+
+
+
+
+2013-05-24T10:13:58.000000Z
+6b4333e8172e4059584e7751d06aef39
+2013-03-13T02:34:30.834306Z
+1475137
+mjjoyce
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+258
+
+test.bat
+file
+
+
+
+
+2013-05-24T10:13:58.000000Z
+b6ddbd00e9e919b7dd40b8a6413854cb
+2013-03-13T02:34:30.834306Z
+1475137
+mjjoyce
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+305
+
+testacular.conf.js
+file
+
+
+
+
+2013-05-24T10:13:58.000000Z
+61f1d3a123c766a2a66554387197c2d5
+2013-05-07T20:50:17.582309Z
+1480068
+joyce
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+405
+
+test.sh
+file
+
+
+
+
+2013-05-24T10:13:58.000000Z
+a8859b0de82e7db1fb0b302295423631
+2013-03-13T02:34:30.834306Z
+1475137
+mjjoyce
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+254
+
+watchr.rb
+file
+
+
+
+
+2013-05-24T10:13:58.000000Z
+bc2871a5662031fbb61e312426004abb
+2013-03-13T02:34:30.834306Z
+1475137
+mjjoyce
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+503
+
+web-server.js
+file
+
+
+
+
+2013-05-24T10:13:58.000000Z
+88fdfdf89e31b40797b50745ebf9928c
+2013-05-07T20:50:17.582309Z
+1480068
+joyce
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+8080
+
+e2e-test.bat
+file
+
+
+
+
+2013-05-24T10:13:58.000000Z
+10131a94d448fc4a49347db3db54505e
+2013-03-13T02:34:30.834306Z
+1475137
+mjjoyce
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+297
+
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/scripts/.svn/prop-base/e2e-test.bat.svn-base
----------------------------------------------------------------------
diff --git a/src/main/ui/scripts/.svn/prop-base/e2e-test.bat.svn-base b/src/main/ui/scripts/.svn/prop-base/e2e-test.bat.svn-base
new file mode 100755
index 0000000..869ac71
--- /dev/null
+++ b/src/main/ui/scripts/.svn/prop-base/e2e-test.bat.svn-base
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/scripts/.svn/prop-base/e2e-test.sh.svn-base
----------------------------------------------------------------------
diff --git a/src/main/ui/scripts/.svn/prop-base/e2e-test.sh.svn-base b/src/main/ui/scripts/.svn/prop-base/e2e-test.sh.svn-base
new file mode 100755
index 0000000..869ac71
--- /dev/null
+++ b/src/main/ui/scripts/.svn/prop-base/e2e-test.sh.svn-base
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/scripts/.svn/prop-base/test.bat.svn-base
----------------------------------------------------------------------
diff --git a/src/main/ui/scripts/.svn/prop-base/test.bat.svn-base b/src/main/ui/scripts/.svn/prop-base/test.bat.svn-base
new file mode 100755
index 0000000..869ac71
--- /dev/null
+++ b/src/main/ui/scripts/.svn/prop-base/test.bat.svn-base
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/scripts/.svn/prop-base/test.sh.svn-base
----------------------------------------------------------------------
diff --git a/src/main/ui/scripts/.svn/prop-base/test.sh.svn-base b/src/main/ui/scripts/.svn/prop-base/test.sh.svn-base
new file mode 100755
index 0000000..869ac71
--- /dev/null
+++ b/src/main/ui/scripts/.svn/prop-base/test.sh.svn-base
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/scripts/.svn/prop-base/testacular-e2e.conf.js.svn-base
----------------------------------------------------------------------
diff --git a/src/main/ui/scripts/.svn/prop-base/testacular-e2e.conf.js.svn-base b/src/main/ui/scripts/.svn/prop-base/testacular-e2e.conf.js.svn-base
new file mode 100755
index 0000000..869ac71
--- /dev/null
+++ b/src/main/ui/scripts/.svn/prop-base/testacular-e2e.conf.js.svn-base
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/scripts/.svn/prop-base/testacular.conf.js.svn-base
----------------------------------------------------------------------
diff --git a/src/main/ui/scripts/.svn/prop-base/testacular.conf.js.svn-base b/src/main/ui/scripts/.svn/prop-base/testacular.conf.js.svn-base
new file mode 100755
index 0000000..869ac71
--- /dev/null
+++ b/src/main/ui/scripts/.svn/prop-base/testacular.conf.js.svn-base
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/scripts/.svn/prop-base/watchr.rb.svn-base
----------------------------------------------------------------------
diff --git a/src/main/ui/scripts/.svn/prop-base/watchr.rb.svn-base b/src/main/ui/scripts/.svn/prop-base/watchr.rb.svn-base
new file mode 100755
index 0000000..869ac71
--- /dev/null
+++ b/src/main/ui/scripts/.svn/prop-base/watchr.rb.svn-base
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/scripts/.svn/prop-base/web-server.js.svn-base
----------------------------------------------------------------------
diff --git a/src/main/ui/scripts/.svn/prop-base/web-server.js.svn-base b/src/main/ui/scripts/.svn/prop-base/web-server.js.svn-base
new file mode 100755
index 0000000..869ac71
--- /dev/null
+++ b/src/main/ui/scripts/.svn/prop-base/web-server.js.svn-base
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/scripts/.svn/text-base/e2e-test.bat.svn-base
----------------------------------------------------------------------
diff --git a/src/main/ui/scripts/.svn/text-base/e2e-test.bat.svn-base b/src/main/ui/scripts/.svn/text-base/e2e-test.bat.svn-base
new file mode 100755
index 0000000..c89a708
--- /dev/null
+++ b/src/main/ui/scripts/.svn/text-base/e2e-test.bat.svn-base
@@ -0,0 +1,11 @@
+@echo off
+
+REM Windows script for running e2e tests
+REM You have to run server and capture some browser first
+REM
+REM Requirements:
+REM - NodeJS (http://nodejs.org/)
+REM - Testacular (npm install -g testacular)
+
+set BASE_DIR=%~dp0
+testacular start "%BASE_DIR%\..\config\testacular-e2e.conf.js" %*
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/scripts/.svn/text-base/e2e-test.sh.svn-base
----------------------------------------------------------------------
diff --git a/src/main/ui/scripts/.svn/text-base/e2e-test.sh.svn-base b/src/main/ui/scripts/.svn/text-base/e2e-test.sh.svn-base
new file mode 100755
index 0000000..e887c34
--- /dev/null
+++ b/src/main/ui/scripts/.svn/text-base/e2e-test.sh.svn-base
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+BASE_DIR=`dirname $0`
+
+echo ""
+echo "Starting Testacular Server (http://vojtajina.github.com/testacular)"
+echo "-------------------------------------------------------------------"
+
+testacular start $BASE_DIR/../config/testacular-e2e.conf.js $*
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/scripts/.svn/text-base/test.bat.svn-base
----------------------------------------------------------------------
diff --git a/src/main/ui/scripts/.svn/text-base/test.bat.svn-base b/src/main/ui/scripts/.svn/text-base/test.bat.svn-base
new file mode 100755
index 0000000..000242f
--- /dev/null
+++ b/src/main/ui/scripts/.svn/text-base/test.bat.svn-base
@@ -0,0 +1,11 @@
+@echo off
+
+REM Windows script for running unit tests
+REM You have to run server and capture some browser first
+REM
+REM Requirements:
+REM - NodeJS (http://nodejs.org/)
+REM - Testacular (npm install -g testacular)
+
+set BASE_DIR=%~dp0
+testacular start "%BASE_DIR%\..\config\testacular.conf.js" %*
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/scripts/.svn/text-base/test.sh.svn-base
----------------------------------------------------------------------
diff --git a/src/main/ui/scripts/.svn/text-base/test.sh.svn-base b/src/main/ui/scripts/.svn/text-base/test.sh.svn-base
new file mode 100755
index 0000000..4c37cde
--- /dev/null
+++ b/src/main/ui/scripts/.svn/text-base/test.sh.svn-base
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+BASE_DIR=`dirname $0`
+
+echo ""
+echo "Starting Testacular Server (http://vojtajina.github.com/testacular)"
+echo "-------------------------------------------------------------------"
+
+testacular start $BASE_DIR/../config/testacular.conf.js $*
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/scripts/.svn/text-base/testacular-e2e.conf.js.svn-base
----------------------------------------------------------------------
diff --git a/src/main/ui/scripts/.svn/text-base/testacular-e2e.conf.js.svn-base b/src/main/ui/scripts/.svn/text-base/testacular-e2e.conf.js.svn-base
new file mode 100755
index 0000000..51f51d2
--- /dev/null
+++ b/src/main/ui/scripts/.svn/text-base/testacular-e2e.conf.js.svn-base
@@ -0,0 +1,22 @@
+basePath = '../';
+
+files = [
+ ANGULAR_SCENARIO,
+ ANGULAR_SCENARIO_ADAPTER,
+ 'test/e2e/**/*.js'
+];
+
+autoWatch = false;
+
+browsers = ['Chrome'];
+
+singleRun = true;
+
+proxies = {
+ '/': 'http://localhost:8000/'
+};
+
+junitReporter = {
+ outputFile: 'test_out/e2e.xml',
+ suite: 'e2e'
+};
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/scripts/.svn/text-base/testacular.conf.js.svn-base
----------------------------------------------------------------------
diff --git a/src/main/ui/scripts/.svn/text-base/testacular.conf.js.svn-base b/src/main/ui/scripts/.svn/text-base/testacular.conf.js.svn-base
new file mode 100755
index 0000000..5dc0dae
--- /dev/null
+++ b/src/main/ui/scripts/.svn/text-base/testacular.conf.js.svn-base
@@ -0,0 +1,23 @@
+basePath = '../';
+
+files = [
+ JASMINE,
+ JASMINE_ADAPTER,
+ 'app/js/jquery-1.9.1.min.js',
+ 'app/js/bootstrap.js',
+ 'app/lib/angular/angular.js',
+ 'app/lib/angular/angular-*.js',
+ 'test/lib/angular/angular-mocks.js',
+ 'app/js/leaflet.js',
+ 'app/js/**/*.js',
+ 'test/unit/**/*.js'
+];
+
+autoWatch = true;
+
+browsers = ['Chrome'];
+
+junitReporter = {
+ outputFile: 'test_out/unit.xml',
+ suite: 'unit'
+};
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/scripts/.svn/text-base/watchr.rb.svn-base
----------------------------------------------------------------------
diff --git a/src/main/ui/scripts/.svn/text-base/watchr.rb.svn-base b/src/main/ui/scripts/.svn/text-base/watchr.rb.svn-base
new file mode 100755
index 0000000..89ef656
--- /dev/null
+++ b/src/main/ui/scripts/.svn/text-base/watchr.rb.svn-base
@@ -0,0 +1,19 @@
+#!/usr/bin/env watchr
+
+# config file for watchr http://github.com/mynyml/watchr
+# install: gem install watchr
+# run: watch watchr.rb
+# note: make sure that you have jstd server running (server.sh) and a browser captured
+
+log_file = File.expand_path(File.dirname(__FILE__) + '/../logs/jstd.log')
+
+`cd ..`
+`touch #{log_file}`
+
+puts "String watchr... log file: #{log_file}"
+
+watch( '(app/js|test/unit)' ) do
+ `echo "\n\ntest run started @ \`date\`" > #{log_file}`
+ `scripts/test.sh &> #{log_file}`
+end
+
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/scripts/.svn/text-base/web-server.js.svn-base
----------------------------------------------------------------------
diff --git a/src/main/ui/scripts/.svn/text-base/web-server.js.svn-base b/src/main/ui/scripts/.svn/text-base/web-server.js.svn-base
new file mode 100755
index 0000000..0d1a248
--- /dev/null
+++ b/src/main/ui/scripts/.svn/text-base/web-server.js.svn-base
@@ -0,0 +1,295 @@
+#!/usr/bin/env node
+
+var util = require('util'),
+ http = require('http'),
+ fs = require('fs'),
+ url = require('url'),
+ events = require('events');
+
+var DEFAULT_PORT = 8000;
+
+function main(argv) {
+ new HttpServer({
+ 'GET': createServlet(StaticServlet),
+ 'HEAD': createServlet(StaticServlet)
+ }).start(Number(argv[2]) || DEFAULT_PORT);
+}
+
+function escapeHtml(value) {
+ return value.toString().
+ replace('<', '<').
+ replace('>', '>').
+ replace('"', '"');
+}
+
+function createServlet(Class) {
+ var servlet = new Class();
+ return servlet.handleRequest.bind(servlet);
+}
+
+/**
+ * An Http server implementation that uses a map of methods to decide
+ * action routing.
+ *
+ * @param {Object} Map of method => Handler function
+ */
+function HttpServer(handlers) {
+ this.handlers = handlers;
+ this.server = http.createServer(this.handleRequest_.bind(this));
+}
+
+HttpServer.prototype.start = function(port) {
+ this.port = port;
+ this.server.listen(port);
+ util.puts('Http Server running at http://localhost:' + port + '/');
+};
+
+HttpServer.prototype.parseUrl_ = function(urlString) {
+ var parsed = url.parse(urlString);
+ parsed.pathname = url.resolve('/', parsed.pathname);
+ return url.parse(url.format(parsed), true);
+};
+
+HttpServer.prototype.handleRequest_ = function(req, res) {
+ var logEntry = req.method + ' ' + req.url;
+ if (req.headers['user-agent']) {
+ logEntry += ' ' + req.headers['user-agent'];
+ }
+ util.puts(logEntry);
+ req.url = this.parseUrl_(req.url);
+ var handler = this.handlers[req.method];
+ if (!handler) {
+ res.writeHead(501);
+ res.end();
+ } else {
+ handler.call(this, req, res);
+ }
+};
+
+/**
+ * Handles static content.
+ */
+function StaticServlet() {}
+
+StaticServlet.MimeMap = {
+ 'txt': 'text/plain',
+ 'html': 'text/html',
+ 'css': 'text/css',
+ 'xml': 'application/xml',
+ 'json': 'application/json',
+ 'js': 'application/javascript',
+ 'jpg': 'image/jpeg',
+ 'jpeg': 'image/jpeg',
+ 'gif': 'image/gif',
+ 'png': 'image/png',
+ 'svg': 'image/svg+xml'
+};
+
+StaticServlet.prototype.handleRequest = function(req, res) {
+ var self = this;
+ var path = ('./' + req.url.pathname).replace('//','/').replace(/%(..)/g, function(match, hex){
+ return String.fromCharCode(parseInt(hex, 16));
+ });
+ var parts = path.split('/');
+ if (parts[parts.length-1].charAt(0) === '.')
+ return self.sendForbidden_(req, res, path);
+ if (~path.indexOf("dirlist"))
+ return self.getDirList_(req, res, path);
+ fs.stat(path, function(err, stat) {
+ if (err)
+ return self.sendMissing_(req, res, path);
+ if (stat.isDirectory())
+ return self.sendDirectory_(req, res, path);
+ return self.sendFile_(req, res, path);
+ });
+}
+
+StaticServlet.prototype.sendError_ = function(req, res, error) {
+ res.writeHead(500, {
+ 'Content-Type': 'text/html'
+ });
+ res.write('<!doctype html>\n');
+ res.write('<title>Internal Server Error</title>\n');
+ res.write('<h1>Internal Server Error</h1>');
+ res.write('<pre>' + escapeHtml(util.inspect(error)) + '</pre>');
+ util.puts('500 Internal Server Error');
+ util.puts(util.inspect(error));
+};
+
+StaticServlet.prototype.sendMissing_ = function(req, res, path) {
+ path = path.substring(1);
+ res.writeHead(404, {
+ 'Content-Type': 'text/html'
+ });
+ res.write('<!doctype html>\n');
+ res.write('<title>404 Not Found</title>\n');
+ res.write('<h1>Not Found</h1>');
+ res.write(
+ '<p>The requested URL ' +
+ escapeHtml(path) +
+ ' was not found on this server.</p>'
+ );
+ res.end();
+ util.puts('404 Not Found: ' + path);
+};
+
+StaticServlet.prototype.sendForbidden_ = function(req, res, path) {
+ path = path.substring(1);
+ res.writeHead(403, {
+ 'Content-Type': 'text/html'
+ });
+ res.write('<!doctype html>\n');
+ res.write('<title>403 Forbidden</title>\n');
+ res.write('<h1>Forbidden</h1>');
+ res.write(
+ '<p>You do not have permission to access ' +
+ escapeHtml(path) + ' on this server.</p>'
+ );
+ res.end();
+ util.puts('403 Forbidden: ' + path);
+};
+
+StaticServlet.prototype.sendRedirect_ = function(req, res, redirectUrl) {
+ res.writeHead(301, {
+ 'Content-Type': 'text/html',
+ 'Location': redirectUrl
+ });
+ res.write('<!doctype html>\n');
+ res.write('<title>301 Moved Permanently</title>\n');
+ res.write('<h1>Moved Permanently</h1>');
+ res.write(
+ '<p>The document has moved <a href="' +
+ redirectUrl +
+ '">here</a>.</p>'
+ );
+ res.end();
+ util.puts('301 Moved Permanently: ' + redirectUrl);
+};
+
+StaticServlet.prototype.getDirList_ = function(req, res, path) {
+ res.writeHead(200, {
+ 'Content-Type': 'json'
+ });
+
+ // Grab the passed path value
+ var pathQuery = url.parse(req.url, true).query.path
+ // Using the supplied path, grab directory information
+ var dirList = fs.readdirSync(pathQuery);
+
+ // Filter out any hidden files or current/previous directory references
+ dirList = dirList.filter(function(item, index, array) {
+ return (item[0] !== ".");
+ });
+
+ // Generate the full path names for all the items found when 'ls'-ing
+ // the passed directory.
+ dirList = dirList.map(function(item, index, array) {
+ var temp = item;
+
+ // Make sure the path is joined properly. Sometimes there will be a trailing
+ // '/' in the path and sometimes there won't. Don't want to end up with '//'.
+ if (pathQuery[pathQuery.length - 1] === "/") {
+ temp = pathQuery + item;
+ } else {
+ temp = pathQuery + "/" + item;
+ }
+
+ // We want the directories that are found to have a trailing '/'. Let's make sure
+ // that we do that!
+ var ret = temp;
+ if (fs.existsSync(temp + "/")) {
+ ret = temp + "/";
+ }
+
+ return ret;
+ });
+
+ // Sort all the results alphabetically ignoring case.
+ dirList = dirList.sort(function(a, b) {
+ if (a.toLowerCase() < b.toLowerCase()) return -1;
+ if (a.toLowerCase() > b.toLowerCase()) return 1;
+ return 0;
+ });
+
+ res.write(JSON.stringify(dirList));
+ res.end();
+}
+
+StaticServlet.prototype.sendFile_ = function(req, res, path) {
+ var self = this;
+ var file = fs.createReadStream(path);
+ res.writeHead(200, {
+ 'Content-Type': StaticServlet.
+ MimeMap[path.split('.').pop()] || 'text/plain'
+ });
+ if (req.method === 'HEAD') {
+ res.end();
+ } else {
+ file.on('data', res.write.bind(res));
+ file.on('close', function() {
+ res.end();
+ });
+ file.on('error', function(error) {
+ self.sendError_(req, res, error);
+ });
+ }
+};
+
+StaticServlet.prototype.sendDirectory_ = function(req, res, path) {
+ var self = this;
+ if (path.match(/[^\/]$/)) {
+ req.url.pathname += '/';
+ var redirectUrl = url.format(url.parse(url.format(req.url)));
+ return self.sendRedirect_(req, res, redirectUrl);
+ }
+ fs.readdir(path, function(err, files) {
+ if (err)
+ return self.sendError_(req, res, error);
+
+ if (!files.length)
+ return self.writeDirectoryIndex_(req, res, path, []);
+
+ var remaining = files.length;
+ files.forEach(function(fileName, index) {
+ fs.stat(path + '/' + fileName, function(err, stat) {
+ if (err)
+ return self.sendError_(req, res, err);
+ if (stat.isDirectory()) {
+ files[index] = fileName + '/';
+ }
+ if (!(--remaining))
+ return self.writeDirectoryIndex_(req, res, path, files);
+ });
+ });
+ });
+};
+
+StaticServlet.prototype.writeDirectoryIndex_ = function(req, res, path, files) {
+ path = path.substring(1);
+ res.writeHead(200, {
+ 'Content-Type': 'text/html'
+ });
+ if (req.method === 'HEAD') {
+ res.end();
+ return;
+ }
+ res.write('<!doctype html>\n');
+ res.write('<title>' + escapeHtml(path) + '</title>\n');
+ res.write('<style>\n');
+ res.write(' ol { list-style-type: none; font-size: 1.2em; }\n');
+ res.write('</style>\n');
+ res.write('<h1>Directory: ' + escapeHtml(path) + '</h1>');
+ res.write('<ol>');
+ files.forEach(function(fileName) {
+ if (fileName.charAt(0) !== '.') {
+ res.write('<li><a href="' +
+ escapeHtml(fileName) + '">' +
+ escapeHtml(fileName) + '</a></li>');
+ }
+ });
+ res.write('</ol>');
+ res.end();
+};
+
+// Must be last,
+main(process.argv);
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/scripts/e2e-test.bat
----------------------------------------------------------------------
diff --git a/src/main/ui/scripts/e2e-test.bat b/src/main/ui/scripts/e2e-test.bat
new file mode 100755
index 0000000..c89a708
--- /dev/null
+++ b/src/main/ui/scripts/e2e-test.bat
@@ -0,0 +1,11 @@
+@echo off
+
+REM Windows script for running e2e tests
+REM You have to run server and capture some browser first
+REM
+REM Requirements:
+REM - NodeJS (http://nodejs.org/)
+REM - Testacular (npm install -g testacular)
+
+set BASE_DIR=%~dp0
+testacular start "%BASE_DIR%\..\config\testacular-e2e.conf.js" %*
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/scripts/e2e-test.sh
----------------------------------------------------------------------
diff --git a/src/main/ui/scripts/e2e-test.sh b/src/main/ui/scripts/e2e-test.sh
new file mode 100755
index 0000000..e887c34
--- /dev/null
+++ b/src/main/ui/scripts/e2e-test.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+BASE_DIR=`dirname $0`
+
+echo ""
+echo "Starting Testacular Server (http://vojtajina.github.com/testacular)"
+echo "-------------------------------------------------------------------"
+
+testacular start $BASE_DIR/../config/testacular-e2e.conf.js $*
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/scripts/test.bat
----------------------------------------------------------------------
diff --git a/src/main/ui/scripts/test.bat b/src/main/ui/scripts/test.bat
new file mode 100755
index 0000000..000242f
--- /dev/null
+++ b/src/main/ui/scripts/test.bat
@@ -0,0 +1,11 @@
+@echo off
+
+REM Windows script for running unit tests
+REM You have to run server and capture some browser first
+REM
+REM Requirements:
+REM - NodeJS (http://nodejs.org/)
+REM - Testacular (npm install -g testacular)
+
+set BASE_DIR=%~dp0
+testacular start "%BASE_DIR%\..\config\testacular.conf.js" %*
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/scripts/test.sh
----------------------------------------------------------------------
diff --git a/src/main/ui/scripts/test.sh b/src/main/ui/scripts/test.sh
new file mode 100755
index 0000000..4c37cde
--- /dev/null
+++ b/src/main/ui/scripts/test.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+BASE_DIR=`dirname $0`
+
+echo ""
+echo "Starting Testacular Server (http://vojtajina.github.com/testacular)"
+echo "-------------------------------------------------------------------"
+
+testacular start $BASE_DIR/../config/testacular.conf.js $*
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/scripts/testacular-e2e.conf.js
----------------------------------------------------------------------
diff --git a/src/main/ui/scripts/testacular-e2e.conf.js b/src/main/ui/scripts/testacular-e2e.conf.js
new file mode 100755
index 0000000..51f51d2
--- /dev/null
+++ b/src/main/ui/scripts/testacular-e2e.conf.js
@@ -0,0 +1,22 @@
+basePath = '../';
+
+files = [
+ ANGULAR_SCENARIO,
+ ANGULAR_SCENARIO_ADAPTER,
+ 'test/e2e/**/*.js'
+];
+
+autoWatch = false;
+
+browsers = ['Chrome'];
+
+singleRun = true;
+
+proxies = {
+ '/': 'http://localhost:8000/'
+};
+
+junitReporter = {
+ outputFile: 'test_out/e2e.xml',
+ suite: 'e2e'
+};
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/scripts/testacular.conf.js
----------------------------------------------------------------------
diff --git a/src/main/ui/scripts/testacular.conf.js b/src/main/ui/scripts/testacular.conf.js
new file mode 100755
index 0000000..5dc0dae
--- /dev/null
+++ b/src/main/ui/scripts/testacular.conf.js
@@ -0,0 +1,23 @@
+basePath = '../';
+
+files = [
+ JASMINE,
+ JASMINE_ADAPTER,
+ 'app/js/jquery-1.9.1.min.js',
+ 'app/js/bootstrap.js',
+ 'app/lib/angular/angular.js',
+ 'app/lib/angular/angular-*.js',
+ 'test/lib/angular/angular-mocks.js',
+ 'app/js/leaflet.js',
+ 'app/js/**/*.js',
+ 'test/unit/**/*.js'
+];
+
+autoWatch = true;
+
+browsers = ['Chrome'];
+
+junitReporter = {
+ outputFile: 'test_out/unit.xml',
+ suite: 'unit'
+};
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/scripts/watchr.rb
----------------------------------------------------------------------
diff --git a/src/main/ui/scripts/watchr.rb b/src/main/ui/scripts/watchr.rb
new file mode 100755
index 0000000..89ef656
--- /dev/null
+++ b/src/main/ui/scripts/watchr.rb
@@ -0,0 +1,19 @@
+#!/usr/bin/env watchr
+
+# config file for watchr http://github.com/mynyml/watchr
+# install: gem install watchr
+# run: watch watchr.rb
+# note: make sure that you have jstd server running (server.sh) and a browser captured
+
+log_file = File.expand_path(File.dirname(__FILE__) + '/../logs/jstd.log')
+
+`cd ..`
+`touch #{log_file}`
+
+puts "String watchr... log file: #{log_file}"
+
+watch( '(app/js|test/unit)' ) do
+ `echo "\n\ntest run started @ \`date\`" > #{log_file}`
+ `scripts/test.sh &> #{log_file}`
+end
+
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/scripts/web-server.js
----------------------------------------------------------------------
diff --git a/src/main/ui/scripts/web-server.js b/src/main/ui/scripts/web-server.js
new file mode 100755
index 0000000..0d1a248
--- /dev/null
+++ b/src/main/ui/scripts/web-server.js
@@ -0,0 +1,295 @@
+#!/usr/bin/env node
+
+var util = require('util'),
+ http = require('http'),
+ fs = require('fs'),
+ url = require('url'),
+ events = require('events');
+
+var DEFAULT_PORT = 8000;
+
+function main(argv) {
+ new HttpServer({
+ 'GET': createServlet(StaticServlet),
+ 'HEAD': createServlet(StaticServlet)
+ }).start(Number(argv[2]) || DEFAULT_PORT);
+}
+
+function escapeHtml(value) {
+ return value.toString().
+ replace('<', '<').
+ replace('>', '>').
+ replace('"', '"');
+}
+
+function createServlet(Class) {
+ var servlet = new Class();
+ return servlet.handleRequest.bind(servlet);
+}
+
+/**
+ * An Http server implementation that uses a map of methods to decide
+ * action routing.
+ *
+ * @param {Object} Map of method => Handler function
+ */
+function HttpServer(handlers) {
+ this.handlers = handlers;
+ this.server = http.createServer(this.handleRequest_.bind(this));
+}
+
+HttpServer.prototype.start = function(port) {
+ this.port = port;
+ this.server.listen(port);
+ util.puts('Http Server running at http://localhost:' + port + '/');
+};
+
+HttpServer.prototype.parseUrl_ = function(urlString) {
+ var parsed = url.parse(urlString);
+ parsed.pathname = url.resolve('/', parsed.pathname);
+ return url.parse(url.format(parsed), true);
+};
+
+HttpServer.prototype.handleRequest_ = function(req, res) {
+ var logEntry = req.method + ' ' + req.url;
+ if (req.headers['user-agent']) {
+ logEntry += ' ' + req.headers['user-agent'];
+ }
+ util.puts(logEntry);
+ req.url = this.parseUrl_(req.url);
+ var handler = this.handlers[req.method];
+ if (!handler) {
+ res.writeHead(501);
+ res.end();
+ } else {
+ handler.call(this, req, res);
+ }
+};
+
+/**
+ * Handles static content.
+ */
+function StaticServlet() {}
+
+StaticServlet.MimeMap = {
+ 'txt': 'text/plain',
+ 'html': 'text/html',
+ 'css': 'text/css',
+ 'xml': 'application/xml',
+ 'json': 'application/json',
+ 'js': 'application/javascript',
+ 'jpg': 'image/jpeg',
+ 'jpeg': 'image/jpeg',
+ 'gif': 'image/gif',
+ 'png': 'image/png',
+ 'svg': 'image/svg+xml'
+};
+
+StaticServlet.prototype.handleRequest = function(req, res) {
+ var self = this;
+ var path = ('./' + req.url.pathname).replace('//','/').replace(/%(..)/g, function(match, hex){
+ return String.fromCharCode(parseInt(hex, 16));
+ });
+ var parts = path.split('/');
+ if (parts[parts.length-1].charAt(0) === '.')
+ return self.sendForbidden_(req, res, path);
+ if (~path.indexOf("dirlist"))
+ return self.getDirList_(req, res, path);
+ fs.stat(path, function(err, stat) {
+ if (err)
+ return self.sendMissing_(req, res, path);
+ if (stat.isDirectory())
+ return self.sendDirectory_(req, res, path);
+ return self.sendFile_(req, res, path);
+ });
+}
+
+StaticServlet.prototype.sendError_ = function(req, res, error) {
+ res.writeHead(500, {
+ 'Content-Type': 'text/html'
+ });
+ res.write('<!doctype html>\n');
+ res.write('<title>Internal Server Error</title>\n');
+ res.write('<h1>Internal Server Error</h1>');
+ res.write('<pre>' + escapeHtml(util.inspect(error)) + '</pre>');
+ util.puts('500 Internal Server Error');
+ util.puts(util.inspect(error));
+};
+
+StaticServlet.prototype.sendMissing_ = function(req, res, path) {
+ path = path.substring(1);
+ res.writeHead(404, {
+ 'Content-Type': 'text/html'
+ });
+ res.write('<!doctype html>\n');
+ res.write('<title>404 Not Found</title>\n');
+ res.write('<h1>Not Found</h1>');
+ res.write(
+ '<p>The requested URL ' +
+ escapeHtml(path) +
+ ' was not found on this server.</p>'
+ );
+ res.end();
+ util.puts('404 Not Found: ' + path);
+};
+
+StaticServlet.prototype.sendForbidden_ = function(req, res, path) {
+ path = path.substring(1);
+ res.writeHead(403, {
+ 'Content-Type': 'text/html'
+ });
+ res.write('<!doctype html>\n');
+ res.write('<title>403 Forbidden</title>\n');
+ res.write('<h1>Forbidden</h1>');
+ res.write(
+ '<p>You do not have permission to access ' +
+ escapeHtml(path) + ' on this server.</p>'
+ );
+ res.end();
+ util.puts('403 Forbidden: ' + path);
+};
+
+StaticServlet.prototype.sendRedirect_ = function(req, res, redirectUrl) {
+ res.writeHead(301, {
+ 'Content-Type': 'text/html',
+ 'Location': redirectUrl
+ });
+ res.write('<!doctype html>\n');
+ res.write('<title>301 Moved Permanently</title>\n');
+ res.write('<h1>Moved Permanently</h1>');
+ res.write(
+ '<p>The document has moved <a href="' +
+ redirectUrl +
+ '">here</a>.</p>'
+ );
+ res.end();
+ util.puts('301 Moved Permanently: ' + redirectUrl);
+};
+
+StaticServlet.prototype.getDirList_ = function(req, res, path) {
+ res.writeHead(200, {
+ 'Content-Type': 'json'
+ });
+
+ // Grab the passed path value
+ var pathQuery = url.parse(req.url, true).query.path
+ // Using the supplied path, grab directory information
+ var dirList = fs.readdirSync(pathQuery);
+
+ // Filter out any hidden files or current/previous directory references
+ dirList = dirList.filter(function(item, index, array) {
+ return (item[0] !== ".");
+ });
+
+ // Generate the full path names for all the items found when 'ls'-ing
+ // the passed directory.
+ dirList = dirList.map(function(item, index, array) {
+ var temp = item;
+
+ // Make sure the path is joined properly. Sometimes there will be a trailing
+ // '/' in the path and sometimes there won't. Don't want to end up with '//'.
+ if (pathQuery[pathQuery.length - 1] === "/") {
+ temp = pathQuery + item;
+ } else {
+ temp = pathQuery + "/" + item;
+ }
+
+ // We want the directories that are found to have a trailing '/'. Let's make sure
+ // that we do that!
+ var ret = temp;
+ if (fs.existsSync(temp + "/")) {
+ ret = temp + "/";
+ }
+
+ return ret;
+ });
+
+ // Sort all the results alphabetically ignoring case.
+ dirList = dirList.sort(function(a, b) {
+ if (a.toLowerCase() < b.toLowerCase()) return -1;
+ if (a.toLowerCase() > b.toLowerCase()) return 1;
+ return 0;
+ });
+
+ res.write(JSON.stringify(dirList));
+ res.end();
+}
+
+StaticServlet.prototype.sendFile_ = function(req, res, path) {
+ var self = this;
+ var file = fs.createReadStream(path);
+ res.writeHead(200, {
+ 'Content-Type': StaticServlet.
+ MimeMap[path.split('.').pop()] || 'text/plain'
+ });
+ if (req.method === 'HEAD') {
+ res.end();
+ } else {
+ file.on('data', res.write.bind(res));
+ file.on('close', function() {
+ res.end();
+ });
+ file.on('error', function(error) {
+ self.sendError_(req, res, error);
+ });
+ }
+};
+
+StaticServlet.prototype.sendDirectory_ = function(req, res, path) {
+ var self = this;
+ if (path.match(/[^\/]$/)) {
+ req.url.pathname += '/';
+ var redirectUrl = url.format(url.parse(url.format(req.url)));
+ return self.sendRedirect_(req, res, redirectUrl);
+ }
+ fs.readdir(path, function(err, files) {
+ if (err)
+ return self.sendError_(req, res, error);
+
+ if (!files.length)
+ return self.writeDirectoryIndex_(req, res, path, []);
+
+ var remaining = files.length;
+ files.forEach(function(fileName, index) {
+ fs.stat(path + '/' + fileName, function(err, stat) {
+ if (err)
+ return self.sendError_(req, res, err);
+ if (stat.isDirectory()) {
+ files[index] = fileName + '/';
+ }
+ if (!(--remaining))
+ return self.writeDirectoryIndex_(req, res, path, files);
+ });
+ });
+ });
+};
+
+StaticServlet.prototype.writeDirectoryIndex_ = function(req, res, path, files) {
+ path = path.substring(1);
+ res.writeHead(200, {
+ 'Content-Type': 'text/html'
+ });
+ if (req.method === 'HEAD') {
+ res.end();
+ return;
+ }
+ res.write('<!doctype html>\n');
+ res.write('<title>' + escapeHtml(path) + '</title>\n');
+ res.write('<style>\n');
+ res.write(' ol { list-style-type: none; font-size: 1.2em; }\n');
+ res.write('</style>\n');
+ res.write('<h1>Directory: ' + escapeHtml(path) + '</h1>');
+ res.write('<ol>');
+ files.forEach(function(fileName) {
+ if (fileName.charAt(0) !== '.') {
+ res.write('<li><a href="' +
+ escapeHtml(fileName) + '">' +
+ escapeHtml(fileName) + '</a></li>');
+ }
+ });
+ res.write('</ol>');
+ res.end();
+};
+
+// Must be last,
+main(process.argv);
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/test/.svn/all-wcprops
----------------------------------------------------------------------
diff --git a/src/main/ui/test/.svn/all-wcprops b/src/main/ui/test/.svn/all-wcprops
new file mode 100755
index 0000000..985f754
--- /dev/null
+++ b/src/main/ui/test/.svn/all-wcprops
@@ -0,0 +1,5 @@
+K 25
+svn:wc:ra_dav:version-url
+V 74
+/repos/asf/!svn/ver/1480068/incubator/climate/trunk/rcmet/src/main/ui/test
+END
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/test/.svn/entries
----------------------------------------------------------------------
diff --git a/src/main/ui/test/.svn/entries b/src/main/ui/test/.svn/entries
new file mode 100755
index 0000000..23f284c
--- /dev/null
+++ b/src/main/ui/test/.svn/entries
@@ -0,0 +1,37 @@
+10
+
+dir
+1485921
+https://svn.apache.org/repos/asf/incubator/climate/trunk/rcmet/src/main/ui/test
+https://svn.apache.org/repos/asf
+
+
+
+2013-05-07T20:50:17.582309Z
+1480068
+joyce
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+13f79535-47bb-0310-9956-ffa450edef68
+
+unit
+dir
+
+lib
+dir
+
+e2e
+dir
+
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/test/e2e/.svn/all-wcprops
----------------------------------------------------------------------
diff --git a/src/main/ui/test/e2e/.svn/all-wcprops b/src/main/ui/test/e2e/.svn/all-wcprops
new file mode 100755
index 0000000..9630d5c
--- /dev/null
+++ b/src/main/ui/test/e2e/.svn/all-wcprops
@@ -0,0 +1,17 @@
+K 25
+svn:wc:ra_dav:version-url
+V 78
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/ui/test/e2e
+END
+scenarios.js
+K 25
+svn:wc:ra_dav:version-url
+V 91
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/ui/test/e2e/scenarios.js
+END
+runner.html
+K 25
+svn:wc:ra_dav:version-url
+V 90
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/ui/test/e2e/runner.html
+END
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/test/e2e/.svn/entries
----------------------------------------------------------------------
diff --git a/src/main/ui/test/e2e/.svn/entries b/src/main/ui/test/e2e/.svn/entries
new file mode 100755
index 0000000..689e080
--- /dev/null
+++ b/src/main/ui/test/e2e/.svn/entries
@@ -0,0 +1,96 @@
+10
+
+dir
+1485921
+https://svn.apache.org/repos/asf/incubator/climate/trunk/rcmet/src/main/ui/test/e2e
+https://svn.apache.org/repos/asf
+
+
+
+2013-03-13T02:34:30.834306Z
+1475137
+mjjoyce
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+13f79535-47bb-0310-9956-ffa450edef68
+
+scenarios.js
+file
+
+
+
+
+2013-05-24T10:13:56.000000Z
+c7986c2afc527fad2b30a95162c86f52
+2013-03-13T02:34:30.834306Z
+1475137
+mjjoyce
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+938
+
+runner.html
+file
+
+
+
+
+2013-05-24T10:13:56.000000Z
+1c808bdae719fb220a52654dcd304633
+2013-03-13T02:34:30.834306Z
+1475137
+mjjoyce
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+234
+
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/test/e2e/.svn/prop-base/runner.html.svn-base
----------------------------------------------------------------------
diff --git a/src/main/ui/test/e2e/.svn/prop-base/runner.html.svn-base b/src/main/ui/test/e2e/.svn/prop-base/runner.html.svn-base
new file mode 100755
index 0000000..869ac71
--- /dev/null
+++ b/src/main/ui/test/e2e/.svn/prop-base/runner.html.svn-base
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/test/e2e/.svn/prop-base/scenarios.js.svn-base
----------------------------------------------------------------------
diff --git a/src/main/ui/test/e2e/.svn/prop-base/scenarios.js.svn-base b/src/main/ui/test/e2e/.svn/prop-base/scenarios.js.svn-base
new file mode 100755
index 0000000..869ac71
--- /dev/null
+++ b/src/main/ui/test/e2e/.svn/prop-base/scenarios.js.svn-base
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/test/e2e/.svn/text-base/runner.html.svn-base
----------------------------------------------------------------------
diff --git a/src/main/ui/test/e2e/.svn/text-base/runner.html.svn-base b/src/main/ui/test/e2e/.svn/text-base/runner.html.svn-base
new file mode 100755
index 0000000..a40fa08
--- /dev/null
+++ b/src/main/ui/test/e2e/.svn/text-base/runner.html.svn-base
@@ -0,0 +1,10 @@
+<!doctype html>
+<html lang="en">
+ <head>
+ <title>End2end Test Runner</title>
+ <script src="../lib/angular/angular-scenario.js" ng-autotest></script>
+ <script src="scenarios.js"></script>
+ </head>
+ <body>
+ </body>
+</html>
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/test/e2e/.svn/text-base/scenarios.js.svn-base
----------------------------------------------------------------------
diff --git a/src/main/ui/test/e2e/.svn/text-base/scenarios.js.svn-base b/src/main/ui/test/e2e/.svn/text-base/scenarios.js.svn-base
new file mode 100755
index 0000000..26e174a
--- /dev/null
+++ b/src/main/ui/test/e2e/.svn/text-base/scenarios.js.svn-base
@@ -0,0 +1,45 @@
+'use strict';
+
+/* http://docs.angularjs.org/guide/dev_guide.e2e-testing */
+
+describe('my app', function() {
+
+ beforeEach(function() {
+ browser().navigateTo('../../app/index.html');
+ });
+
+
+ it('should automatically redirect to /view1 when location hash/fragment is empty', function() {
+ expect(browser().location().url()).toBe("/view1");
+ });
+
+
+ describe('view1', function() {
+
+ beforeEach(function() {
+ browser().navigateTo('#/view1');
+ });
+
+
+ it('should render view1 when user navigates to /view1', function() {
+ expect(element('[ng-view] p:first').text()).
+ toMatch(/partial for view 1/);
+ });
+
+ });
+
+
+ describe('view2', function() {
+
+ beforeEach(function() {
+ browser().navigateTo('#/view2');
+ });
+
+
+ it('should render view2 when user navigates to /view2', function() {
+ expect(element('[ng-view] p:first').text()).
+ toMatch(/partial for view 2/);
+ });
+
+ });
+});
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/test/e2e/runner.html
----------------------------------------------------------------------
diff --git a/src/main/ui/test/e2e/runner.html b/src/main/ui/test/e2e/runner.html
new file mode 100755
index 0000000..a40fa08
--- /dev/null
+++ b/src/main/ui/test/e2e/runner.html
@@ -0,0 +1,10 @@
+<!doctype html>
+<html lang="en">
+ <head>
+ <title>End2end Test Runner</title>
+ <script src="../lib/angular/angular-scenario.js" ng-autotest></script>
+ <script src="scenarios.js"></script>
+ </head>
+ <body>
+ </body>
+</html>
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/test/e2e/scenarios.js
----------------------------------------------------------------------
diff --git a/src/main/ui/test/e2e/scenarios.js b/src/main/ui/test/e2e/scenarios.js
new file mode 100755
index 0000000..26e174a
--- /dev/null
+++ b/src/main/ui/test/e2e/scenarios.js
@@ -0,0 +1,45 @@
+'use strict';
+
+/* http://docs.angularjs.org/guide/dev_guide.e2e-testing */
+
+describe('my app', function() {
+
+ beforeEach(function() {
+ browser().navigateTo('../../app/index.html');
+ });
+
+
+ it('should automatically redirect to /view1 when location hash/fragment is empty', function() {
+ expect(browser().location().url()).toBe("/view1");
+ });
+
+
+ describe('view1', function() {
+
+ beforeEach(function() {
+ browser().navigateTo('#/view1');
+ });
+
+
+ it('should render view1 when user navigates to /view1', function() {
+ expect(element('[ng-view] p:first').text()).
+ toMatch(/partial for view 1/);
+ });
+
+ });
+
+
+ describe('view2', function() {
+
+ beforeEach(function() {
+ browser().navigateTo('#/view2');
+ });
+
+
+ it('should render view2 when user navigates to /view2', function() {
+ expect(element('[ng-view] p:first').text()).
+ toMatch(/partial for view 2/);
+ });
+
+ });
+});
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/test/lib/.svn/all-wcprops
----------------------------------------------------------------------
diff --git a/src/main/ui/test/lib/.svn/all-wcprops b/src/main/ui/test/lib/.svn/all-wcprops
new file mode 100755
index 0000000..e697ac9
--- /dev/null
+++ b/src/main/ui/test/lib/.svn/all-wcprops
@@ -0,0 +1,5 @@
+K 25
+svn:wc:ra_dav:version-url
+V 78
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/ui/test/lib
+END
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/test/lib/.svn/entries
----------------------------------------------------------------------
diff --git a/src/main/ui/test/lib/.svn/entries b/src/main/ui/test/lib/.svn/entries
new file mode 100755
index 0000000..8b12b3a
--- /dev/null
+++ b/src/main/ui/test/lib/.svn/entries
@@ -0,0 +1,31 @@
+10
+
+dir
+1485921
+https://svn.apache.org/repos/asf/incubator/climate/trunk/rcmet/src/main/ui/test/lib
+https://svn.apache.org/repos/asf
+
+
+
+2013-03-13T02:34:30.834306Z
+1475137
+mjjoyce
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+13f79535-47bb-0310-9956-ffa450edef68
+
+angular
+dir
+
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/test/lib/angular/.svn/all-wcprops
----------------------------------------------------------------------
diff --git a/src/main/ui/test/lib/angular/.svn/all-wcprops b/src/main/ui/test/lib/angular/.svn/all-wcprops
new file mode 100755
index 0000000..7bbdef5
--- /dev/null
+++ b/src/main/ui/test/lib/angular/.svn/all-wcprops
@@ -0,0 +1,23 @@
+K 25
+svn:wc:ra_dav:version-url
+V 86
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/ui/test/lib/angular
+END
+version.txt
+K 25
+svn:wc:ra_dav:version-url
+V 98
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/ui/test/lib/angular/version.txt
+END
+angular-scenario.js
+K 25
+svn:wc:ra_dav:version-url
+V 106
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/ui/test/lib/angular/angular-scenario.js
+END
+angular-mocks.js
+K 25
+svn:wc:ra_dav:version-url
+V 103
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/ui/test/lib/angular/angular-mocks.js
+END
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/test/lib/angular/.svn/entries
----------------------------------------------------------------------
diff --git a/src/main/ui/test/lib/angular/.svn/entries b/src/main/ui/test/lib/angular/.svn/entries
new file mode 100755
index 0000000..9782df5
--- /dev/null
+++ b/src/main/ui/test/lib/angular/.svn/entries
@@ -0,0 +1,130 @@
+10
+
+dir
+1485921
+https://svn.apache.org/repos/asf/incubator/climate/trunk/rcmet/src/main/ui/test/lib/angular
+https://svn.apache.org/repos/asf
+
+
+
+2013-03-13T02:34:30.834306Z
+1475137
+mjjoyce
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+13f79535-47bb-0310-9956-ffa450edef68
+
+version.txt
+file
+
+
+
+
+2013-05-24T10:13:55.000000Z
+34cd1f67e8156bf27ba489aacd9acb1f
+2013-03-13T02:34:30.834306Z
+1475137
+mjjoyce
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+6
+
+angular-scenario.js
+file
+
+
+
+
+2013-05-24T10:13:55.000000Z
+01b3e787da465d718535aa127e82f2af
+2013-03-13T02:34:30.834306Z
+1475137
+mjjoyce
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+805828
+
+angular-mocks.js
+file
+
+
+
+
+2013-05-24T10:13:55.000000Z
+1924c97ae0d78b43f093e529c6143d86
+2013-03-13T02:34:30.834306Z
+1475137
+mjjoyce
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+56116
+
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/test/lib/angular/.svn/prop-base/angular-mocks.js.svn-base
----------------------------------------------------------------------
diff --git a/src/main/ui/test/lib/angular/.svn/prop-base/angular-mocks.js.svn-base b/src/main/ui/test/lib/angular/.svn/prop-base/angular-mocks.js.svn-base
new file mode 100755
index 0000000..869ac71
--- /dev/null
+++ b/src/main/ui/test/lib/angular/.svn/prop-base/angular-mocks.js.svn-base
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/test/lib/angular/.svn/prop-base/angular-scenario.js.svn-base
----------------------------------------------------------------------
diff --git a/src/main/ui/test/lib/angular/.svn/prop-base/angular-scenario.js.svn-base b/src/main/ui/test/lib/angular/.svn/prop-base/angular-scenario.js.svn-base
new file mode 100755
index 0000000..869ac71
--- /dev/null
+++ b/src/main/ui/test/lib/angular/.svn/prop-base/angular-scenario.js.svn-base
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/ui/test/lib/angular/.svn/prop-base/version.txt.svn-base
----------------------------------------------------------------------
diff --git a/src/main/ui/test/lib/angular/.svn/prop-base/version.txt.svn-base b/src/main/ui/test/lib/angular/.svn/prop-base/version.txt.svn-base
new file mode 100755
index 0000000..869ac71
--- /dev/null
+++ b/src/main/ui/test/lib/angular/.svn/prop-base/version.txt.svn-base
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END