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('<', '&lt;').
+    replace('>', '&gt;').
+    replace('"', '&quot;');
+}
+
+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('<', '&lt;').
+    replace('>', '&gt;').
+    replace('"', '&quot;');
+}
+
+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