From 0b0cee3afb6be83327d2c53f8cc3e3f99a3b4726 Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Wed, 23 Sep 2015 16:43:58 -0700 Subject: [PATCH 01/26] [Example] Add domain Add a second domain to example telemetry, to support addition of a domain selector to the time conductor; nasa/openmctweb#115 --- example/generator/bundle.json | 6 +++++- example/generator/src/SinewaveTelemetrySeries.js | 7 ++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/example/generator/bundle.json b/example/generator/bundle.json index a13bbdc8f8..cdb4736957 100644 --- a/example/generator/bundle.json +++ b/example/generator/bundle.json @@ -34,6 +34,10 @@ { "key": "time", "name": "Time" + }, + { + "key": "yesterday", + "name": "Yesterday" } ], "ranges": [ @@ -61,4 +65,4 @@ } ] } -} \ No newline at end of file +} diff --git a/example/generator/src/SinewaveTelemetrySeries.js b/example/generator/src/SinewaveTelemetrySeries.js index 5b7914a867..dbab6dcac5 100644 --- a/example/generator/src/SinewaveTelemetrySeries.js +++ b/example/generator/src/SinewaveTelemetrySeries.js @@ -29,7 +29,8 @@ define( function () { "use strict"; - var firstObservedTime = Math.floor(Date.now() / 1000); + var ONE_DAY = 1000 * 60 * 60 * 24, + firstObservedTime = Math.floor(Date.now() / 1000); /** * @@ -56,8 +57,8 @@ define( }; generatorData.getDomainValue = function (i, domain) { - return (i + offset) * 1000 + - (domain !== 'delta' ? (firstObservedTime * 1000) : 0); + return (i + offset) * 1000 + firstObservedTime * 1000 - + (domain === 'yesterday' ? ONE_DAY : 0); }; generatorData.getRangeValue = function (i, range) { From 5d5a7c26c585e90c8f97883119a51144b773c397 Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Wed, 23 Sep 2015 16:53:12 -0700 Subject: [PATCH 02/26] [Time Conductor] Maintain domain state Maintain domain state in the time conductor; add a default list of domains to choose from. --- platform/features/conductor/bundle.json | 12 +++++++- .../conductor/src/ConductorService.js | 9 ++++-- .../features/conductor/src/TimeConductor.js | 30 ++++++++++++++++++- 3 files changed, 46 insertions(+), 5 deletions(-) diff --git a/platform/features/conductor/bundle.json b/platform/features/conductor/bundle.json index b230f9d370..0b62d74762 100644 --- a/platform/features/conductor/bundle.json +++ b/platform/features/conductor/bundle.json @@ -18,7 +18,17 @@ { "key": "conductorService", "implementation": "ConductorService.js", - "depends": [ "now" ] + "depends": [ "now", "TIME_CONDUCTOR_DOMAINS" ] + } + ], + "contants": [ + { + "key": "TIME_CONDUCTOR_DOMAINS", + "value": [ + { "key": "time", "name": "Time" }, + { "key": "yesterday", "name": "Yesterday" } + ], + "comment": "Placeholder; to be replaced by inspection of available domains." } ] } diff --git a/platform/features/conductor/src/ConductorService.js b/platform/features/conductor/src/ConductorService.js index 59cfa95e3c..3e281d2c1d 100644 --- a/platform/features/conductor/src/ConductorService.js +++ b/platform/features/conductor/src/ConductorService.js @@ -39,12 +39,15 @@ define( * @param {Function} now a function which returns the current time * as a UNIX timestamp, in milliseconds */ - function ConductorService(now) { + function ConductorService(now, domains) { var initialEnd = Math.ceil(now() / SIX_HOURS_IN_MS) * SIX_HOURS_IN_MS; - this.conductor = - new TimeConductor(initialEnd - ONE_DAY_IN_MS, initialEnd); + this.conductor = new TimeConductor( + initialEnd - ONE_DAY_IN_MS, + initialEnd, + domains + ); } /** diff --git a/platform/features/conductor/src/TimeConductor.js b/platform/features/conductor/src/TimeConductor.js index fcf8dbae04..3ce9c369ff 100644 --- a/platform/features/conductor/src/TimeConductor.js +++ b/platform/features/conductor/src/TimeConductor.js @@ -40,9 +40,11 @@ define( * @param {number} start the initial start time * @param {number} end the initial end time */ - function TimeConductor(start, end) { + function TimeConductor(start, end, domains) { this.inner = { start: start, end: end }; this.outer = { start: start, end: end }; + this.domains = domains; + this.domain = domains[0]; } /** @@ -94,6 +96,32 @@ define( return this.inner.end; }; + /** + * Get available domain options which can be used to bound time + * selection. + * @returns {TelemetryDomain[]} available domains + */ + TimeConductor.prototype.domainOptions = function () { + return this.domains; + }; + + /** + * Get or set (if called with an argument) the active domain. + * @param {string} [key] the key identifying the domain choice + * @returns {TelemetryDomain} the active telemetry domain + */ + TimeConductor.prototype.activeDomain = function (key) { + var i; + if (arguments.length > 0) { + for (i = 0; i < this.domains.length; i += 1) { + if (this.domains[i].key === key) { + this.domain = this.domains[i]; + } + } + } + return this.domain; + }; + return TimeConductor; } ); From d238b669a5da3cffb5bca20c1c244fc5c514c490 Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Wed, 23 Sep 2015 17:09:38 -0700 Subject: [PATCH 03/26] [Time Conductor] Show domain options --- platform/features/conductor/bundle.json | 8 +++- .../res/templates/time-conductor.html | 8 ++++ .../conductor/src/ConductorRepresenter.js | 42 ++++++++++++++----- .../features/conductor/src/TimeConductor.js | 14 ++++--- 4 files changed, 55 insertions(+), 17 deletions(-) create mode 100644 platform/features/conductor/res/templates/time-conductor.html diff --git a/platform/features/conductor/bundle.json b/platform/features/conductor/bundle.json index 0b62d74762..3a0cf12f92 100644 --- a/platform/features/conductor/bundle.json +++ b/platform/features/conductor/bundle.json @@ -21,7 +21,13 @@ "depends": [ "now", "TIME_CONDUCTOR_DOMAINS" ] } ], - "contants": [ + "templates": [ + { + "key": "time-conductor", + "templateUrl": "templates/time-conductor.html" + } + ], + "constants": [ { "key": "TIME_CONDUCTOR_DOMAINS", "value": [ diff --git a/platform/features/conductor/res/templates/time-conductor.html b/platform/features/conductor/res/templates/time-conductor.html new file mode 100644 index 0000000000..c597bf33c3 --- /dev/null +++ b/platform/features/conductor/res/templates/time-conductor.html @@ -0,0 +1,8 @@ + + + + diff --git a/platform/features/conductor/src/ConductorRepresenter.js b/platform/features/conductor/src/ConductorRepresenter.js index b1b35477b6..9ca7d4f228 100644 --- a/platform/features/conductor/src/ConductorRepresenter.js +++ b/platform/features/conductor/src/ConductorRepresenter.js @@ -32,7 +32,7 @@ define( '"position: absolute; bottom: 0; width: 100%; ', 'overflow: hidden; ', 'height: ' + CONDUCTOR_HEIGHT + '">', - "", + "", "", '' ].join(''), @@ -68,8 +68,8 @@ define( // Update the time conductor from the scope function wireScope(conductor, conductorScope, repScope) { function updateConductorOuter() { - conductor.queryStart(conductorScope.conductor.outer.start); - conductor.queryEnd(conductorScope.conductor.outer.end); + conductor.queryStart(conductorScope.ngModel.conductor.outer.start); + conductor.queryEnd(conductorScope.ngModel.conductor.outer.end); repScope.$broadcast( 'telemetry:query:bounds', bounds(conductor.queryStart(), conductor.queryEnd()) @@ -77,27 +77,49 @@ define( } function updateConductorInner() { - conductor.displayStart(conductorScope.conductor.inner.start); - conductor.displayEnd(conductorScope.conductor.inner.end); + conductor.displayStart(conductorScope.ngModel.conductor.inner.start); + conductor.displayEnd(conductorScope.ngModel.conductor.inner.end); repScope.$broadcast( 'telemetry:display:bounds', bounds(conductor.displayStart(), conductor.displayEnd()) ); } - conductorScope.conductor = { + function updateDomain(value) { + conductor.activeDomain(value); + repScope.$broadcast( + 'telemetry:query:bounds', + bounds(conductor.queryStart(), conductor.queryEnd()) + ); + } + + // telemetry domain metadata -> option for a select control + function makeOption(domainOption) { + return { + name: domainOption.name, + value: domainOption.key + }; + } + + conductorScope.ngModel = {}; + conductorScope.ngModel.conductor = { outer: bounds(conductor.queryStart(), conductor.queryEnd()), inner: bounds(conductor.displayStart(), conductor.displayEnd()) }; + conductorScope.ngModel.options = + conductor.domainOptions().map(makeOption); + conductorScope.ngModel.domain = conductor.activeDomain(); conductorScope - .$watch('conductor.outer.start', updateConductorOuter); + .$watch('ngModel.conductor.outer.start', updateConductorOuter); conductorScope - .$watch('conductor.outer.end', updateConductorOuter); + .$watch('ngModel.conductor.outer.end', updateConductorOuter); conductorScope - .$watch('conductor.inner.start', updateConductorInner); + .$watch('ngModel.conductor.inner.start', updateConductorInner); conductorScope - .$watch('conductor.inner.end', updateConductorInner); + .$watch('ngModel.conductor.inner.end', updateConductorInner); + conductorScope + .$watch('ngModel.domain', updateDomain); repScope.$on('telemetry:view', updateConductorInner); } diff --git a/platform/features/conductor/src/TimeConductor.js b/platform/features/conductor/src/TimeConductor.js index 3ce9c369ff..b8e07d051d 100644 --- a/platform/features/conductor/src/TimeConductor.js +++ b/platform/features/conductor/src/TimeConductor.js @@ -44,7 +44,7 @@ define( this.inner = { start: start, end: end }; this.outer = { start: start, end: end }; this.domains = domains; - this.domain = domains[0]; + this.domain = domains[0].key; } /** @@ -111,13 +111,15 @@ define( * @returns {TelemetryDomain} the active telemetry domain */ TimeConductor.prototype.activeDomain = function (key) { - var i; + function matchesKey(domain) { + return domain.key === key; + } + if (arguments.length > 0) { - for (i = 0; i < this.domains.length; i += 1) { - if (this.domains[i].key === key) { - this.domain = this.domains[i]; - } + if (!this.domains.some(matchesKey)) { + throw new Error("Unknown domain " + key); } + this.domain = key; } return this.domain; }; From f182d1f2c42810291b9dd466fdbde092a6eeedb9 Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Wed, 23 Sep 2015 17:14:40 -0700 Subject: [PATCH 04/26] [Time Conductor] Include domain selection in requests ...as well as use as default in a telemetry series. --- .../features/conductor/src/ConductorTelemetryDecorator.js | 4 +++- platform/features/conductor/src/ConductorTelemetrySeries.js | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/platform/features/conductor/src/ConductorTelemetryDecorator.js b/platform/features/conductor/src/ConductorTelemetryDecorator.js index 9c8126c33f..0038c7ccd9 100644 --- a/platform/features/conductor/src/ConductorTelemetryDecorator.js +++ b/platform/features/conductor/src/ConductorTelemetryDecorator.js @@ -71,12 +71,14 @@ define( ConductorTelemetryDecorator.prototype.amendRequests = function (requests) { var conductor = this.conductorService.getConductor(), start = conductor.displayStart(), - end = conductor.displayEnd(); + end = conductor.displayEnd(), + domain = conductor.activeDomain(); function amendRequest(request) { request = request || {}; request.start = start; request.end = end; + request.domain = domain; return request; } diff --git a/platform/features/conductor/src/ConductorTelemetrySeries.js b/platform/features/conductor/src/ConductorTelemetrySeries.js index aa6ec0ec63..98cebe0907 100644 --- a/platform/features/conductor/src/ConductorTelemetrySeries.js +++ b/platform/features/conductor/src/ConductorTelemetrySeries.js @@ -52,6 +52,7 @@ define( this.startIndex = binSearch(0, max, conductor.displayStart()); this.endIndex = binSearch(0, max, conductor.displayEnd()); this.series = series; + this.domain = conductor.activeDomain(); } ConductorTelemetrySeries.prototype.getPointCount = function () { @@ -59,6 +60,7 @@ define( }; ConductorTelemetrySeries.prototype.getDomainValue = function (i, d) { + d = d || this.domain; return this.series.getDomainValue(i + this.startIndex, d); }; From 928e31b5488b1aff4a87d31c48c70aab1565a36b Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Wed, 23 Sep 2015 17:22:32 -0700 Subject: [PATCH 05/26] [Common UI] Avoid apply-in-a-digest Don't invoke from mct-resize when first observing an element's size during linking; observed issue in the context of adding domain selector to time conductor. --- platform/commonUI/general/src/directives/MCTResize.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/platform/commonUI/general/src/directives/MCTResize.js b/platform/commonUI/general/src/directives/MCTResize.js index 7f2d722803..f0fd8e0a69 100644 --- a/platform/commonUI/general/src/directives/MCTResize.js +++ b/platform/commonUI/general/src/directives/MCTResize.js @@ -58,6 +58,7 @@ define( // Link; start listening for changes to an element's size function link(scope, element, attrs) { var lastBounds, + linking = true, active = true; // Determine how long to wait before the next update @@ -74,7 +75,9 @@ define( lastBounds.width !== bounds.width || lastBounds.height !== bounds.height) { scope.$eval(attrs.mctResize, { bounds: bounds }); - scope.$apply(); // Trigger a digest + if (!linking) { // Avoid apply-in-a-digest + scope.$apply(); + } lastBounds = bounds; } } @@ -101,6 +104,9 @@ define( // Handle the initial callback onInterval(); + + // Trigger scope.$apply on subsequent changes + linking = false; } return { From 3d8aec2d010bb4c27a3d954984e509b35e42d1d3 Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Wed, 23 Sep 2015 17:26:56 -0700 Subject: [PATCH 06/26] [Time Conductor] Pass domain with events --- .../conductor/src/ConductorRepresenter.js | 33 ++++++++++--------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/platform/features/conductor/src/ConductorRepresenter.js b/platform/features/conductor/src/ConductorRepresenter.js index 9ca7d4f228..0da32965bc 100644 --- a/platform/features/conductor/src/ConductorRepresenter.js +++ b/platform/features/conductor/src/ConductorRepresenter.js @@ -60,9 +60,9 @@ define( this.$compile = $compile; } - // Combine start/end times into a single object - function bounds(start, end) { - return { start: start, end: end }; + // Combine start/end times & domain into a single object + function bounds(start, end, domain) { + return { start: start, end: end, domain: domain }; } // Update the time conductor from the scope @@ -70,27 +70,30 @@ define( function updateConductorOuter() { conductor.queryStart(conductorScope.ngModel.conductor.outer.start); conductor.queryEnd(conductorScope.ngModel.conductor.outer.end); - repScope.$broadcast( - 'telemetry:query:bounds', - bounds(conductor.queryStart(), conductor.queryEnd()) - ); + repScope.$broadcast('telemetry:query:bounds', bounds( + conductor.queryStart(), + conductor.queryEnd(), + conductor.activeDomain() + )); } function updateConductorInner() { conductor.displayStart(conductorScope.ngModel.conductor.inner.start); conductor.displayEnd(conductorScope.ngModel.conductor.inner.end); - repScope.$broadcast( - 'telemetry:display:bounds', - bounds(conductor.displayStart(), conductor.displayEnd()) - ); + repScope.$broadcast('telemetry:display:bounds', bounds( + conductor.displayStart(), + conductor.displayEnd(), + conductor.activeDomain() + )); } function updateDomain(value) { conductor.activeDomain(value); - repScope.$broadcast( - 'telemetry:query:bounds', - bounds(conductor.queryStart(), conductor.queryEnd()) - ); + repScope.$broadcast('telemetry:display:bounds', bounds( + conductor.displayStart(), + conductor.displayEnd(), + conductor.activeDomain() + )); } // telemetry domain metadata -> option for a select control From 0c7de981950b7bad0f59679da6ff4527b1960d6d Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Thu, 24 Sep 2015 12:18:47 -0700 Subject: [PATCH 07/26] [Time Conductor] Use active domain in binary search --- .../features/conductor/src/ConductorTelemetrySeries.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/platform/features/conductor/src/ConductorTelemetrySeries.js b/platform/features/conductor/src/ConductorTelemetrySeries.js index 98cebe0907..d2f7c874cc 100644 --- a/platform/features/conductor/src/ConductorTelemetrySeries.js +++ b/platform/features/conductor/src/ConductorTelemetrySeries.js @@ -38,13 +38,14 @@ define( * @implements {TelemetrySeries} */ function ConductorTelemetrySeries(series, conductor) { - var max = series.getPointCount() - 1; + var max = series.getPointCount() - 1, + domain = conductor.activeDomain(); function binSearch(min, max, value) { var mid = Math.floor((min + max) / 2); return min > max ? min : - series.getDomainValue(mid) < value ? + series.getDomainValue(mid, domain) < value ? binSearch(mid + 1, max, value) : binSearch(min, mid - 1, value); } @@ -52,7 +53,7 @@ define( this.startIndex = binSearch(0, max, conductor.displayStart()); this.endIndex = binSearch(0, max, conductor.displayEnd()); this.series = series; - this.domain = conductor.activeDomain(); + this.domain = domain; } ConductorTelemetrySeries.prototype.getPointCount = function () { From 13525a67c202e39daed7e5f9c2f3ff16d53c33a0 Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Thu, 24 Sep 2015 12:48:07 -0700 Subject: [PATCH 08/26] [Time Conductor] Fix domain-based calculations ...in example telemetry, to support development work on time conductor. --- .../generator/src/SinewaveTelemetrySeries.js | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/example/generator/src/SinewaveTelemetrySeries.js b/example/generator/src/SinewaveTelemetrySeries.js index dbab6dcac5..1e84034766 100644 --- a/example/generator/src/SinewaveTelemetrySeries.js +++ b/example/generator/src/SinewaveTelemetrySeries.js @@ -29,24 +29,25 @@ define( function () { "use strict"; - var ONE_DAY = 1000 * 60 * 60 * 24, - firstObservedTime = Math.floor(Date.now() / 1000); + var ONE_DAY = 60 * 60 * 24, + firstObservedTime = Math.floor(Date.now() / 1000) - ONE_DAY; /** * * @constructor */ function SinewaveTelemetrySeries(request) { - var latestObservedTime = Math.floor(Date.now() / 1000), + var timeOffset = (request.domain === 'yesterday') ? ONE_DAY : 0, + latestTime = Math.floor(Date.now() / 1000) - timeOffset, + firstTime = firstObservedTime - timeOffset, endTime = (request.end !== undefined) ? - Math.floor(request.end / 1000) : latestObservedTime, - count = - Math.min(endTime, latestObservedTime) - firstObservedTime, - period = request.period || 30, + Math.floor(request.end / 1000) : latestTime, + count = Math.min(endTime, latestTime) - firstTime, + period = +request.period || 30, generatorData = {}, - offset = (request.start !== undefined) ? - Math.floor(request.start / 1000) - firstObservedTime : - 0; + requestStart = (request.start === undefined) ? firstTime : + Math.max(Math.floor(request.start / 1000), firstTime), + offset = requestStart - firstTime; if (request.size !== undefined) { offset = Math.max(offset, count - request.size); @@ -57,8 +58,8 @@ define( }; generatorData.getDomainValue = function (i, domain) { - return (i + offset) * 1000 + firstObservedTime * 1000 - - (domain === 'yesterday' ? ONE_DAY : 0); + return (i + offset) * 1000 + firstTime * 1000 - + (domain === 'yesterday' ? ONE_DAY : 0); }; generatorData.getRangeValue = function (i, range) { From 4ced6c44a6d2b986e8e71f48aed2715712960acd Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Thu, 24 Sep 2015 17:01:50 -0700 Subject: [PATCH 09/26] [Time Conductor] Ignore empty series ...when updating Fixed Position view. --- platform/features/layout/src/FixedController.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/platform/features/layout/src/FixedController.js b/platform/features/layout/src/FixedController.js index f608f490f8..77c655e2cb 100644 --- a/platform/features/layout/src/FixedController.js +++ b/platform/features/layout/src/FixedController.js @@ -105,11 +105,13 @@ define( index ); - setDisplayedValue( - telemetryObject, - telemetrySeries.getRangeValue(index), - limit && datum && limit.evaluate(datum) - ); + if (index >= 0) { + setDisplayedValue( + telemetryObject, + telemetrySeries.getRangeValue(index), + limit && datum && limit.evaluate(datum) + ); + } } // Update the displayed value for this object From ff1fd26efccf67e5f2085336e55758816b08baac Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Thu, 24 Sep 2015 17:05:08 -0700 Subject: [PATCH 10/26] [Time Conductor] Change method name Prefer simpler method names for public API. --- .../features/conductor/src/ConductorRepresenter.js | 10 +++++----- .../conductor/src/ConductorTelemetryDecorator.js | 2 +- .../features/conductor/src/ConductorTelemetrySeries.js | 2 +- platform/features/conductor/src/TimeConductor.js | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/platform/features/conductor/src/ConductorRepresenter.js b/platform/features/conductor/src/ConductorRepresenter.js index 0da32965bc..eecae45aa9 100644 --- a/platform/features/conductor/src/ConductorRepresenter.js +++ b/platform/features/conductor/src/ConductorRepresenter.js @@ -73,7 +73,7 @@ define( repScope.$broadcast('telemetry:query:bounds', bounds( conductor.queryStart(), conductor.queryEnd(), - conductor.activeDomain() + conductor.domain() )); } @@ -83,16 +83,16 @@ define( repScope.$broadcast('telemetry:display:bounds', bounds( conductor.displayStart(), conductor.displayEnd(), - conductor.activeDomain() + conductor.domain() )); } function updateDomain(value) { - conductor.activeDomain(value); + conductor.domain(value); repScope.$broadcast('telemetry:display:bounds', bounds( conductor.displayStart(), conductor.displayEnd(), - conductor.activeDomain() + conductor.domain() )); } @@ -111,7 +111,7 @@ define( }; conductorScope.ngModel.options = conductor.domainOptions().map(makeOption); - conductorScope.ngModel.domain = conductor.activeDomain(); + conductorScope.ngModel.domain = conductor.domain(); conductorScope .$watch('ngModel.conductor.outer.start', updateConductorOuter); diff --git a/platform/features/conductor/src/ConductorTelemetryDecorator.js b/platform/features/conductor/src/ConductorTelemetryDecorator.js index 0038c7ccd9..e629ee0cde 100644 --- a/platform/features/conductor/src/ConductorTelemetryDecorator.js +++ b/platform/features/conductor/src/ConductorTelemetryDecorator.js @@ -72,7 +72,7 @@ define( var conductor = this.conductorService.getConductor(), start = conductor.displayStart(), end = conductor.displayEnd(), - domain = conductor.activeDomain(); + domain = conductor.domain(); function amendRequest(request) { request = request || {}; diff --git a/platform/features/conductor/src/ConductorTelemetrySeries.js b/platform/features/conductor/src/ConductorTelemetrySeries.js index d2f7c874cc..6797b87e7b 100644 --- a/platform/features/conductor/src/ConductorTelemetrySeries.js +++ b/platform/features/conductor/src/ConductorTelemetrySeries.js @@ -39,7 +39,7 @@ define( */ function ConductorTelemetrySeries(series, conductor) { var max = series.getPointCount() - 1, - domain = conductor.activeDomain(); + domain = conductor.domain(); function binSearch(min, max, value) { var mid = Math.floor((min + max) / 2); diff --git a/platform/features/conductor/src/TimeConductor.js b/platform/features/conductor/src/TimeConductor.js index b8e07d051d..6caa1e6d65 100644 --- a/platform/features/conductor/src/TimeConductor.js +++ b/platform/features/conductor/src/TimeConductor.js @@ -44,7 +44,7 @@ define( this.inner = { start: start, end: end }; this.outer = { start: start, end: end }; this.domains = domains; - this.domain = domains[0].key; + this.activeDomain = domains[0].key; } /** @@ -110,7 +110,7 @@ define( * @param {string} [key] the key identifying the domain choice * @returns {TelemetryDomain} the active telemetry domain */ - TimeConductor.prototype.activeDomain = function (key) { + TimeConductor.prototype.domain = function (key) { function matchesKey(domain) { return domain.key === key; } From cbaf45afe9e2a7ebfce00e11e5c9f81edc082346 Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Fri, 25 Sep 2015 10:40:19 -0700 Subject: [PATCH 11/26] [Time Conductor] Update specs nasa/openmctweb#115 --- .../features/conductor/src/TimeConductor.js | 4 +- .../test/ConductorRepresenterSpec.js | 79 +++++++++++++--- .../conductor/test/ConductorServiceSpec.js | 8 +- .../test/ConductorTelemetryDecoratorSpec.js | 92 ++++++++++++++----- .../test/ConductorTelemetrySeriesSpec.js | 9 +- .../conductor/test/TestTimeConductor.js | 48 ++++++++++ .../conductor/test/TimeConductorSpec.js | 29 +++++- 7 files changed, 215 insertions(+), 54 deletions(-) create mode 100644 platform/features/conductor/test/TestTimeConductor.js diff --git a/platform/features/conductor/src/TimeConductor.js b/platform/features/conductor/src/TimeConductor.js index 6caa1e6d65..df30040b7f 100644 --- a/platform/features/conductor/src/TimeConductor.js +++ b/platform/features/conductor/src/TimeConductor.js @@ -119,9 +119,9 @@ define( if (!this.domains.some(matchesKey)) { throw new Error("Unknown domain " + key); } - this.domain = key; + this.activeDomain = key; } - return this.domain; + return this.activeDomain; }; return TimeConductor; diff --git a/platform/features/conductor/test/ConductorRepresenterSpec.js b/platform/features/conductor/test/ConductorRepresenterSpec.js index 2b1003f3c7..b0cf23745f 100644 --- a/platform/features/conductor/test/ConductorRepresenterSpec.js +++ b/platform/features/conductor/test/ConductorRepresenterSpec.js @@ -21,12 +21,9 @@ *****************************************************************************/ /*global define,describe,it,expect,beforeEach,waitsFor,afterEach,jasmine*/ -/** - * EventSpec. Created by vwoeltje on 11/6/14. Modified by shale on 06/23/2015. - */ define( - ["../src/ConductorRepresenter"], - function (ConductorRepresenter) { + ["../src/ConductorRepresenter", "./TestTimeConductor"], + function (ConductorRepresenter, TestTimeConductor) { "use strict"; var SCOPE_METHODS = [ @@ -75,10 +72,7 @@ define( testViews = [ { someKey: "some value" } ]; mockScope = jasmine.createSpyObj('scope', SCOPE_METHODS); mockElement = jasmine.createSpyObj('element', ELEMENT_METHODS); - mockConductor = jasmine.createSpyObj( - 'conductor', - [ 'queryStart', 'queryEnd', 'displayStart', 'displayEnd' ] - ); + mockConductor = new TestTimeConductor(); mockCompiledTemplate = jasmine.createSpy('template'); mockNewScope = jasmine.createSpyObj('newScope', SCOPE_METHODS); mockNewElement = jasmine.createSpyObj('newElement', ELEMENT_METHODS); @@ -133,7 +127,7 @@ define( mockConductor.displayEnd.andReturn(1984); representer.represent(testViews[0], {}); - expect(mockNewScope.conductor).toEqual({ + expect(mockNewScope.ngModel.conductor).toEqual({ inner: { start: 1977, end: 1984 }, outer: { start: 42, end: 12321 } }); @@ -147,21 +141,76 @@ define( representer.represent(testViews[0], {}); - mockNewScope.conductor = testState; + mockNewScope.ngModel.conductor = testState; - fireWatch(mockNewScope, 'conductor.inner.start', testState.inner.start); + fireWatch( + mockNewScope, + 'ngModel.conductor.inner.start', + testState.inner.start + ); expect(mockConductor.displayStart).toHaveBeenCalledWith(42); - fireWatch(mockNewScope, 'conductor.inner.end', testState.inner.end); + fireWatch( + mockNewScope, + 'ngModel.conductor.inner.end', + testState.inner.end + ); expect(mockConductor.displayEnd).toHaveBeenCalledWith(1984); - fireWatch(mockNewScope, 'conductor.outer.start', testState.outer.start); + fireWatch( + mockNewScope, + 'ngModel.conductor.outer.start', + testState.outer.start + ); expect(mockConductor.queryStart).toHaveBeenCalledWith(-1977); - fireWatch(mockNewScope, 'conductor.outer.end', testState.outer.end); + fireWatch( + mockNewScope, + 'ngModel.conductor.outer.end', + testState.outer.end + ); expect(mockConductor.queryEnd).toHaveBeenCalledWith(12321); }); + it("exposes domain selection in scope", function () { + representer.represent(testViews[0], null); + + expect(mockNewScope.ngModel.domain) + .toEqual(mockConductor.domain()); + }); + + it("exposes domain options in scope", function () { + representer.represent(testViews[0], null); + + mockConductor.domainOptions().forEach(function (option, i) { + expect(mockNewScope.ngModel.options[i].value) + .toEqual(option.key); + expect(mockNewScope.ngModel.options[i].name) + .toEqual(option.name); + }); + }); + + it("updates domain selection from scope", function () { + var choice; + representer.represent(testViews[0], null); + + // Choose a domain that isn't currently selected + mockNewScope.ngModel.options.forEach(function (option) { + if (option.value !== mockNewScope.ngModel.domain) { + choice = option.value; + } + }); + + expect(mockConductor.domain) + .not.toHaveBeenCalledWith(choice); + + mockNewScope.ngModel.domain = choice; + fireWatch(mockNewScope, "ngModel.domain", choice); + + expect(mockConductor.domain) + .toHaveBeenCalledWith(choice); + }); + }); } ); diff --git a/platform/features/conductor/test/ConductorServiceSpec.js b/platform/features/conductor/test/ConductorServiceSpec.js index 5146ca5f42..4d6fb12f12 100644 --- a/platform/features/conductor/test/ConductorServiceSpec.js +++ b/platform/features/conductor/test/ConductorServiceSpec.js @@ -21,9 +21,6 @@ *****************************************************************************/ /*global define,describe,it,expect,beforeEach,waitsFor,jasmine*/ -/** - * EventSpec. Created by vwoeltje on 11/6/14. Modified by shale on 06/23/2015. - */ define( ["../src/ConductorService"], function (ConductorService) { @@ -38,7 +35,10 @@ define( beforeEach(function () { mockNow = jasmine.createSpy('now'); mockNow.andReturn(TEST_NOW); - conductorService = new ConductorService(mockNow); + conductorService = new ConductorService(mockNow, [ + { key: "d1", name: "Domain #1" }, + { key: "d2", name: "Domain #2" } + ]); }); it("initializes a time conductor around the current time", function () { diff --git a/platform/features/conductor/test/ConductorTelemetryDecoratorSpec.js b/platform/features/conductor/test/ConductorTelemetryDecoratorSpec.js index 84812b541a..7145682bf3 100644 --- a/platform/features/conductor/test/ConductorTelemetryDecoratorSpec.js +++ b/platform/features/conductor/test/ConductorTelemetryDecoratorSpec.js @@ -23,8 +23,8 @@ define( - ["../src/ConductorTelemetryDecorator"], - function (ConductorTelemetryDecorator) { + ["../src/ConductorTelemetryDecorator", "./TestTimeConductor"], + function (ConductorTelemetryDecorator, TestTimeConductor) { "use strict"; describe("ConductorTelemetryDecorator", function () { @@ -54,10 +54,7 @@ define( 'conductorService', ['getConductor'] ); - mockConductor = jasmine.createSpyObj( - 'conductor', - [ 'queryStart', 'queryEnd', 'displayStart', 'displayEnd' ] - ); + mockConductor = new TestTimeConductor(); mockPromise = jasmine.createSpyObj( 'promise', ['then'] @@ -82,6 +79,7 @@ define( mockConductor.queryEnd.andReturn(-12321); mockConductor.displayStart.andReturn(42); mockConductor.displayEnd.andReturn(1977); + mockConductor.domain.andReturn("testDomain"); decorator = new ConductorTelemetryDecorator( mockConductorService, @@ -89,26 +87,74 @@ define( ); }); - it("adds display start/end times to historical requests", function () { - decorator.requestTelemetry([{ someKey: "some value" }]); - expect(mockTelemetryService.requestTelemetry) - .toHaveBeenCalledWith([{ - someKey: "some value", - start: mockConductor.displayStart(), - end: mockConductor.displayEnd() - }]); + + describe("decorates historical requests", function () { + var request; + + beforeEach(function () { + decorator.requestTelemetry([{ someKey: "some value" }]); + request = mockTelemetryService.requestTelemetry + .mostRecentCall.args[0][0]; + }); + + it("with start times", function () { + expect(request.start).toEqual(mockConductor.displayStart()); + }); + + it("with end times", function () { + expect(request.end).toEqual(mockConductor.displayEnd()); + }); + + it("with domain selection", function () { + expect(request.domain).toEqual(mockConductor.domain()); + }); }); - it("adds display start/end times to subscription requests", function () { - var mockCallback = jasmine.createSpy('callback'); - decorator.subscribe(mockCallback, [{ someKey: "some value" }]); - expect(mockTelemetryService.subscribe) - .toHaveBeenCalledWith(jasmine.any(Function), [{ - someKey: "some value", - start: mockConductor.displayStart(), - end: mockConductor.displayEnd() - }]); + describe("decorates subscription requests", function () { + var request; + + beforeEach(function () { + var mockCallback = jasmine.createSpy('callback'); + decorator.subscribe(mockCallback, [{ someKey: "some value" }]); + request = mockTelemetryService.subscribe + .mostRecentCall.args[1][0]; + }); + + it("with start times", function () { + expect(request.start).toEqual(mockConductor.displayStart()); + }); + + it("with end times", function () { + expect(request.end).toEqual(mockConductor.displayEnd()); + }); + + it("with domain selection", function () { + expect(request.domain).toEqual(mockConductor.domain()); + }); }); +// +// it("adds display start/end times & domain selection to historical requests", function () { +// decorator.requestTelemetry([{ someKey: "some value" }]); +// expect(mockTelemetryService.requestTelemetry) +// .toHaveBeenCalledWith([{ +// someKey: "some value", +// start: mockConductor.displayStart(), +// end: mockConductor.displayEnd(), +// domain: jasmine.any(String) +// }]); +// }); +// +// it("adds display start/end times & domain selection to subscription requests", function () { +// var mockCallback = jasmine.createSpy('callback'); +// decorator.subscribe(mockCallback, [{ someKey: "some value" }]); +// expect(mockTelemetryService.subscribe) +// .toHaveBeenCalledWith(jasmine.any(Function), [{ +// someKey: "some value", +// start: mockConductor.displayStart(), +// end: mockConductor.displayEnd(), +// domain: jasmine.any(String) +// }]); +// }); it("prunes historical values to the displayable range", function () { var packagedTelemetry; diff --git a/platform/features/conductor/test/ConductorTelemetrySeriesSpec.js b/platform/features/conductor/test/ConductorTelemetrySeriesSpec.js index ea884f74f3..9ce485d7d2 100644 --- a/platform/features/conductor/test/ConductorTelemetrySeriesSpec.js +++ b/platform/features/conductor/test/ConductorTelemetrySeriesSpec.js @@ -22,8 +22,8 @@ /*global define,describe,it,expect,beforeEach,waitsFor,jasmine*/ define( - ["../src/ConductorTelemetrySeries"], - function (ConductorTelemetrySeries) { + ["../src/ConductorTelemetrySeries", "./TestTimeConductor"], + function (ConductorTelemetrySeries, TestTimeConductor) { "use strict"; describe("ConductorTelemetrySeries", function () { @@ -39,10 +39,7 @@ define( 'series', [ 'getPointCount', 'getDomainValue', 'getRangeValue' ] ); - mockConductor = jasmine.createSpyObj( - 'conductor', - [ 'queryStart', 'queryEnd', 'displayStart', 'displayEnd' ] - ); + mockConductor = new TestTimeConductor(); mockSeries.getPointCount.andCallFake(function () { return testArray.length; diff --git a/platform/features/conductor/test/TestTimeConductor.js b/platform/features/conductor/test/TestTimeConductor.js new file mode 100644 index 0000000000..5c8b95896f --- /dev/null +++ b/platform/features/conductor/test/TestTimeConductor.js @@ -0,0 +1,48 @@ +/***************************************************************************** + * Open MCT Web, Copyright (c) 2014-2015, United States Government + * as represented by the Administrator of the National Aeronautics and Space + * Administration. All rights reserved. + * + * Open MCT Web is licensed under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * Open MCT Web includes source code licensed under additional open source + * licenses. See the Open Source Licenses file (LICENSES.md) included with + * this source code distribution or the Licensing information page available + * at runtime from the About dialog for additional information. + *****************************************************************************/ +/*global define,describe,it,expect,beforeEach,waitsFor,jasmine,spyOn*/ + +define( + ["../src/TimeConductor"], + function (TimeConductor) { + function TestTimeConductor() { + var self = this; + + TimeConductor.apply(this, [ + 402514200000, + 444546000000, + [ + { key: "domain0", name: "Domain #1" }, + { key: "domain1", name: "Domain #2" } + ] + ]); + + Object.keys(TimeConductor.prototype).forEach(function (method) { + spyOn(self, method).andCallThrough(); + }); + } + + TestTimeConductor.prototype = TimeConductor.prototype; + + return TestTimeConductor; + } +); diff --git a/platform/features/conductor/test/TimeConductorSpec.js b/platform/features/conductor/test/TimeConductorSpec.js index 558322329e..27e9aad93f 100644 --- a/platform/features/conductor/test/TimeConductorSpec.js +++ b/platform/features/conductor/test/TimeConductorSpec.js @@ -21,9 +21,6 @@ *****************************************************************************/ /*global define,describe,it,expect,beforeEach,waitsFor,jasmine*/ -/** - * EventSpec. Created by vwoeltje on 11/6/14. Modified by shale on 06/23/2015. - */ define( ["../src/TimeConductor"], function (TimeConductor) { @@ -32,12 +29,17 @@ define( describe("TimeConductor", function () { var testStart, testEnd, + testDomains, conductor; beforeEach(function () { testStart = 42; testEnd = 12321; - conductor = new TimeConductor(testStart, testEnd); + testDomains = [ + { key: "d1", name: "Domain #1" }, + { key: "d2", name: "Domain #2" } + ] + conductor = new TimeConductor(testStart, testEnd, testDomains); }); it("provides accessors for query/display start/end times", function () { @@ -58,6 +60,25 @@ define( expect(conductor.displayEnd()).toEqual(4); }); + it("exposes domain options", function () { + expect(conductor.domainOptions()).toEqual(testDomains); + }); + + it("exposes the current domain choice", function () { + expect(conductor.domain()).toEqual(testDomains[0].key); + }); + + it("allows the domain choice to be changed", function () { + conductor.domain(testDomains[1].key); + expect(conductor.domain()).toEqual(testDomains[1].key); + }); + + it("throws an error on attempts to set an invalid domain", function () { + expect(function () { + conductor.domain("invalid-domain"); + }).toThrow(); + }); + }); } ); From 2848a8458b042cbb9ff3eb1d282a3258e790727d Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Fri, 25 Sep 2015 11:05:13 -0700 Subject: [PATCH 12/26] [Time Conductor] Avoid exception Avoid exception when trying to generate a single datum in cases where there is no data yet available. --- platform/telemetry/src/TelemetryHandle.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/platform/telemetry/src/TelemetryHandle.js b/platform/telemetry/src/TelemetryHandle.js index ae25fd9bfa..ff77d7b9e0 100644 --- a/platform/telemetry/src/TelemetryHandle.js +++ b/platform/telemetry/src/TelemetryHandle.js @@ -110,20 +110,23 @@ define( * Get the latest telemetry datum for this domain object. This * will be from real-time telemetry, unless an index is specified, * in which case it will be pulled from the historical telemetry - * series at the specified index. + * series at the specified index. If there is no latest available + * datum, this will return undefined. * * @param {DomainObject} domainObject the object of interest * @param {number} [index] the index of the data of interest * @returns {TelemetryDatum} the most recent datum */ self.getDatum = function (telemetryObject, index) { + function makeNewDatum(series) { + return series ? + subscription.makeDatum(telemetryObject, series, index) : + undefined; + } + return typeof index !== 'number' ? subscription.getDatum(telemetryObject) : - subscription.makeDatum( - telemetryObject, - this.getSeries(telemetryObject), - index - ); + makeNewDatum(this.getSeries(telemetryObject)); }; return self; From 00ac249ee204f7c9546fece1c8d9f83208e999f8 Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Fri, 25 Sep 2015 16:06:11 -0700 Subject: [PATCH 13/26] [Time Conductor] Position domain selector nasa/openmtweb#115 --- .../conductor/res/templates/time-conductor.html | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/platform/features/conductor/res/templates/time-conductor.html b/platform/features/conductor/res/templates/time-conductor.html index c597bf33c3..4126652d5b 100644 --- a/platform/features/conductor/res/templates/time-conductor.html +++ b/platform/features/conductor/res/templates/time-conductor.html @@ -1,8 +1,10 @@ - - + + From a4f3e0d776677fee1d8b77e4f8c57e9d9388104f Mon Sep 17 00:00:00 2001 From: Henry Date: Tue, 29 Sep 2015 15:28:55 -0700 Subject: [PATCH 14/26] Plot domain labels showing 1970 if no data --- npm-debug.log | 605 ++++++++++++++++++++++++++ platform/features/plot/src/SubPlot.js | 8 +- 2 files changed, 609 insertions(+), 4 deletions(-) create mode 100644 npm-debug.log diff --git a/npm-debug.log b/npm-debug.log new file mode 100644 index 0000000000..b5f08ae4db --- /dev/null +++ b/npm-debug.log @@ -0,0 +1,605 @@ +0 info it worked if it ends with ok +1 verbose cli [ '/Users/akhenry/.nvm/versions/node/v4.1.1/bin/node', +1 verbose cli '/Users/akhenry/.nvm/versions/node/v4.1.1/bin/npm', +1 verbose cli 'install' ] +2 info using npm@2.14.4 +3 info using node@v4.1.1 +4 verbose readDependencies loading dependencies from /Users/akhenry/Code/openmctweb/openmctweb/package.json +5 verbose install where, deps [ '/Users/akhenry/Code/openmctweb/openmctweb', +5 verbose install [ 'express', +5 verbose install 'minimist', +5 verbose install 'jasmine-core', +5 verbose install 'jsdoc', +5 verbose install 'jshint', +5 verbose install 'karma', +5 verbose install 'karma-chrome-launcher', +5 verbose install 'karma-cli', +5 verbose install 'karma-jasmine', +5 verbose install 'karma-phantomjs-launcher', +5 verbose install 'karma-requirejs', +5 verbose install 'requirejs', +5 verbose install 'marked', +5 verbose install 'glob', +5 verbose install 'split', +5 verbose install 'mkdirp', +5 verbose install 'nomnoml', +5 verbose install 'canvas' ] ] +6 verbose install where, peers [ '/Users/akhenry/Code/openmctweb/openmctweb', [] ] +7 verbose installManyTop reading for lifecycle /Users/akhenry/Code/openmctweb/openmctweb/package.json +8 info preinstall open-mct-web@0.7.2 +9 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/express/package.json +10 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/glob/package.json +11 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/jasmine-core/package.json +12 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/jsdoc/package.json +13 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/jshint/package.json +14 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/karma/package.json +15 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/karma-chrome-launcher/package.json +16 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/karma-cli/package.json +17 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/karma-jasmine/package.json +18 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/karma-phantomjs-launcher/package.json +19 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/karma-requirejs/package.json +20 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/marked/package.json +21 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/minimist/package.json +22 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/mkdirp/package.json +23 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/nomnoml/package.json +24 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/requirejs/package.json +25 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/split/package.json +26 info package.json karma-phantomjs-launcher@0.1.4 No README data +27 info package.json karma-cli@0.0.4 No license field. +28 info package.json requirejs@2.1.20 No license field. +29 verbose readDependencies loading dependencies from /Users/akhenry/Code/openmctweb/openmctweb/package.json +30 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/express/package.json +31 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/glob/package.json +32 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/jasmine-core/package.json +33 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/jsdoc/package.json +34 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/jshint/package.json +35 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/karma/package.json +36 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/karma-chrome-launcher/package.json +37 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/karma-cli/package.json +38 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/karma-jasmine/package.json +39 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/karma-phantomjs-launcher/package.json +40 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/karma-requirejs/package.json +41 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/marked/package.json +42 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/minimist/package.json +43 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/mkdirp/package.json +44 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/nomnoml/package.json +45 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/requirejs/package.json +46 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/split/package.json +47 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/.bin/jsdoc/package.json +48 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/.bin/jshint/package.json +49 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/.bin/karma/package.json +50 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/.bin/marked/package.json +51 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/.bin/mkdirp/package.json +52 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/.bin/r.js/package.json +53 verbose already installed skipping karma-phantomjs-launcher@^0.1.4 /Users/akhenry/Code/openmctweb/openmctweb +54 verbose already installed skipping karma-requirejs@^0.2.2 /Users/akhenry/Code/openmctweb/openmctweb +55 verbose already installed skipping requirejs@^2.1.17 /Users/akhenry/Code/openmctweb/openmctweb +56 verbose already installed skipping marked@^0.3.5 /Users/akhenry/Code/openmctweb/openmctweb +57 verbose already installed skipping glob@>= 3.0.0 /Users/akhenry/Code/openmctweb/openmctweb +58 verbose already installed skipping split@^1.0.0 /Users/akhenry/Code/openmctweb/openmctweb +59 verbose already installed skipping mkdirp@^0.5.1 /Users/akhenry/Code/openmctweb/openmctweb +60 verbose already installed skipping nomnoml@^0.0.3 /Users/akhenry/Code/openmctweb/openmctweb +61 silly cache add args [ 'canvas@^1.2.7', null ] +62 verbose cache add spec canvas@^1.2.7 +63 silly cache add parsed spec Result { +63 silly cache add raw: 'canvas@^1.2.7', +63 silly cache add scope: null, +63 silly cache add name: 'canvas', +63 silly cache add rawSpec: '^1.2.7', +63 silly cache add spec: '>=1.2.7 <2.0.0', +63 silly cache add type: 'range' } +64 silly addNamed canvas@>=1.2.7 <2.0.0 +65 verbose addNamed ">=1.2.7 <2.0.0" is a valid semver range for canvas +66 silly addNameRange { name: 'canvas', range: '>=1.2.7 <2.0.0', hasData: false } +67 silly mapToRegistry name canvas +68 silly mapToRegistry using default registry +69 silly mapToRegistry registry https://registry.npmjs.org/ +70 silly mapToRegistry uri https://registry.npmjs.org/canvas +71 verbose addNameRange registry:https://registry.npmjs.org/canvas not in flight; fetching +72 verbose already installed skipping express@^4.13.1 /Users/akhenry/Code/openmctweb/openmctweb +73 verbose request uri https://registry.npmjs.org/canvas +74 verbose request no auth needed +75 info attempt registry request try #1 at 12:06:03 PM +76 verbose request id 90b5a3876d185e3c +77 verbose etag "2CLU9W5YI8G9A3DFKVCS7J0EK" +78 http request GET https://registry.npmjs.org/canvas +79 verbose already installed skipping minimist@^1.1.1 /Users/akhenry/Code/openmctweb/openmctweb +80 verbose already installed skipping jasmine-core@^2.3.0 /Users/akhenry/Code/openmctweb/openmctweb +81 verbose already installed skipping jsdoc@^3.3.2 /Users/akhenry/Code/openmctweb/openmctweb +82 verbose already installed skipping jshint@^2.7.0 /Users/akhenry/Code/openmctweb/openmctweb +83 verbose already installed skipping karma@^0.12.31 /Users/akhenry/Code/openmctweb/openmctweb +84 verbose already installed skipping karma-chrome-launcher@^0.1.8 /Users/akhenry/Code/openmctweb/openmctweb +85 verbose already installed skipping karma-cli@0.0.4 /Users/akhenry/Code/openmctweb/openmctweb +86 verbose already installed skipping karma-jasmine@^0.1.5 /Users/akhenry/Code/openmctweb/openmctweb +87 http 304 https://registry.npmjs.org/canvas +88 silly get cb [ 304, +88 silly get { date: 'Tue, 29 Sep 2015 19:06:04 GMT', +88 silly get via: '1.1 varnish', +88 silly get 'cache-control': 'max-age=60', +88 silly get etag: '"2CLU9W5YI8G9A3DFKVCS7J0EK"', +88 silly get age: '48', +88 silly get connection: 'keep-alive', +88 silly get 'x-served-by': 'cache-atl6227-ATL', +88 silly get 'x-cache': 'HIT', +88 silly get 'x-cache-hits': '1', +88 silly get 'x-timer': 'S1443553564.269793,VS0,VE1', +88 silly get vary: 'Accept' } ] +89 verbose etag https://registry.npmjs.org/canvas from cache +90 verbose get saving canvas to /Users/akhenry/.npm/registry.npmjs.org/canvas/.cache.json +91 silly addNameRange number 2 { name: 'canvas', range: '>=1.2.7 <2.0.0', hasData: true } +92 silly addNameRange versions [ 'canvas', +92 silly addNameRange [ '0.0.1', +92 silly addNameRange '0.0.2', +92 silly addNameRange '0.0.3', +92 silly addNameRange '0.0.4', +92 silly addNameRange '0.0.5', +92 silly addNameRange '0.0.6', +92 silly addNameRange '0.0.7', +92 silly addNameRange '0.0.8', +92 silly addNameRange '0.1.0', +92 silly addNameRange '0.2.0', +92 silly addNameRange '0.2.1', +92 silly addNameRange '0.3.0', +92 silly addNameRange '0.3.1', +92 silly addNameRange '0.3.2', +92 silly addNameRange '0.3.3', +92 silly addNameRange '0.4.0', +92 silly addNameRange '0.4.1', +92 silly addNameRange '0.4.2', +92 silly addNameRange '0.4.3', +92 silly addNameRange '0.5.0', +92 silly addNameRange '0.5.1', +92 silly addNameRange '0.5.2', +92 silly addNameRange '0.5.3', +92 silly addNameRange '0.5.4', +92 silly addNameRange '0.6.0', +92 silly addNameRange '0.7.0', +92 silly addNameRange '0.7.1', +92 silly addNameRange '0.7.2', +92 silly addNameRange '0.7.3', +92 silly addNameRange '0.8.0', +92 silly addNameRange '0.8.1', +92 silly addNameRange '0.8.2', +92 silly addNameRange '0.8.3', +92 silly addNameRange '0.9.0', +92 silly addNameRange '0.10.0', +92 silly addNameRange '0.10.1', +92 silly addNameRange '0.10.2', +92 silly addNameRange '0.10.3', +92 silly addNameRange '0.11.0', +92 silly addNameRange '0.11.1', +92 silly addNameRange '0.11.2', +92 silly addNameRange '0.11.3', +92 silly addNameRange '0.12.0', +92 silly addNameRange '0.12.1', +92 silly addNameRange '0.13.0', +92 silly addNameRange '0.13.1', +92 silly addNameRange '1.0.0', +92 silly addNameRange '1.0.1', +92 silly addNameRange '1.0.2', +92 silly addNameRange '1.0.3', +92 silly addNameRange '1.0.4', +92 silly addNameRange '1.1.0', +92 silly addNameRange '1.1.1', +92 silly addNameRange '1.1.2', +92 silly addNameRange '1.1.3', +92 silly addNameRange '1.1.4', +92 silly addNameRange '1.1.5', +92 silly addNameRange '1.1.6', +92 silly addNameRange '1.2.0', +92 silly addNameRange '1.2.1', +92 silly addNameRange '1.2.2', +92 silly addNameRange '1.2.3', +92 silly addNameRange '1.2.4', +92 silly addNameRange '1.2.5', +92 silly addNameRange '1.2.6', +92 silly addNameRange '1.2.7', +92 silly addNameRange '1.2.8', +92 silly addNameRange '1.2.9' ] ] +93 silly addNamed canvas@1.2.9 +94 verbose addNamed "1.2.9" is a plain semver version for canvas +95 silly cache afterAdd canvas@1.2.9 +96 verbose afterAdd /Users/akhenry/.npm/canvas/1.2.9/package/package.json not in flight; writing +97 verbose afterAdd /Users/akhenry/.npm/canvas/1.2.9/package/package.json written +98 silly install resolved [ { name: 'canvas', +98 silly install resolved description: 'Canvas graphics API backed by Cairo', +98 silly install resolved version: '1.2.9', +98 silly install resolved author: { name: 'TJ Holowaychuk', email: 'tj@learnboost.com' }, +98 silly install resolved contributors: [ [Object], [Object], [Object] ], +98 silly install resolved keywords: +98 silly install resolved [ 'canvas', +98 silly install resolved 'graphic', +98 silly install resolved 'graphics', +98 silly install resolved 'pixman', +98 silly install resolved 'cairo', +98 silly install resolved 'image', +98 silly install resolved 'images', +98 silly install resolved 'pdf' ], +98 silly install resolved homepage: 'https://github.com/Automattic/node-canvas', +98 silly install resolved repository: +98 silly install resolved { type: 'git', +98 silly install resolved url: 'git://github.com/Automattic/node-canvas.git' }, +98 silly install resolved scripts: { test: 'make test', install: 'node-gyp rebuild' }, +98 silly install resolved dependencies: { nan: '^2.0.9' }, +98 silly install resolved devDependencies: +98 silly install resolved { 'body-parser': '^1.13.3', +98 silly install resolved express: '^4.13.2', +98 silly install resolved jade: '^1.11.0', +98 silly install resolved mocha: '*' }, +98 silly install resolved engines: { node: '>=0.8.0' }, +98 silly install resolved main: './lib/canvas.js', +98 silly install resolved license: 'MIT', +98 silly install resolved gypfile: true, +98 silly install resolved gitHead: 'eb97ef838658ee7a9cafb44bb20f3253e044e42b', +98 silly install resolved bugs: { url: 'https://github.com/Automattic/node-canvas/issues' }, +98 silly install resolved _id: 'canvas@1.2.9', +98 silly install resolved _shasum: '40f36e8f34bea2283c944511dfb575d168003061', +98 silly install resolved _from: 'canvas@>=1.2.7 <2.0.0', +98 silly install resolved _npmVersion: '2.12.1', +98 silly install resolved _nodeVersion: '0.12.7', +98 silly install resolved _npmUser: { name: 'linusu', email: 'linus@folkdatorn.se' }, +98 silly install resolved maintainers: [ [Object], [Object], [Object], [Object], [Object], [Object] ], +98 silly install resolved dist: +98 silly install resolved { shasum: '40f36e8f34bea2283c944511dfb575d168003061', +98 silly install resolved tarball: 'http://registry.npmjs.org/canvas/-/canvas-1.2.9.tgz' }, +98 silly install resolved directories: {}, +98 silly install resolved _resolved: 'https://registry.npmjs.org/canvas/-/canvas-1.2.9.tgz', +98 silly install resolved readme: 'ERROR: No README data found!' } ] +99 info install canvas@1.2.9 into /Users/akhenry/Code/openmctweb/openmctweb +100 info installOne canvas@1.2.9 +101 verbose installOne of canvas to /Users/akhenry/Code/openmctweb/openmctweb not in flight; installing +102 verbose lock using /Users/akhenry/.npm/_locks/canvas-3ca8f0170542eddb.lock for /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas +103 silly install write writing canvas 1.2.9 to /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas +104 verbose unbuild node_modules/canvas +105 silly gentlyRm /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas is being purged from base /Users/akhenry/Code/openmctweb/openmctweb +106 verbose gentlyRm don't care about contents; nuking /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas +107 verbose tar unpack /Users/akhenry/.npm/canvas/1.2.9/package.tgz +108 verbose tar unpacking to /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas +109 silly gentlyRm /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas is being purged +110 verbose gentlyRm don't care about contents; nuking /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas +111 silly gunzTarPerm modes [ '755', '644' ] +112 silly gunzTarPerm extractEntry package.json +113 silly gunzTarPerm extractEntry .npmignore +114 silly gunzTarPerm extractEntry index.js +115 silly gunzTarPerm extractEntry History.md +116 silly gunzTarPerm extractEntry Makefile +117 silly gunzTarPerm extractEntry Readme.md +118 silly gunzTarPerm extractEntry binding.gyp +119 silly gunzTarPerm extractEntry .gitmodules +120 silly gunzTarPerm extractEntry install +121 silly gunzTarPerm extractEntry lib/bindings.js +122 silly gunzTarPerm extractEntry lib/canvas.js +123 silly gunzTarPerm extractEntry lib/context2d.js +124 silly gunzTarPerm extractEntry lib/image.js +125 silly gunzTarPerm extractEntry lib/jpegstream.js +126 silly gunzTarPerm extractEntry lib/pngstream.js +127 silly gunzTarPerm extractEntry .travis.yml +128 silly gunzTarPerm extractEntry src/Image.cc +129 silly gunzTarPerm extractEntry src/Canvas.cc +130 silly gunzTarPerm extractEntry src/CanvasGradient.cc +131 silly gunzTarPerm extractEntry src/CanvasGradient.h +132 silly gunzTarPerm extractEntry src/CanvasPattern.cc +133 silly gunzTarPerm extractEntry src/CanvasPattern.h +134 silly gunzTarPerm extractEntry src/CanvasRenderingContext2d.cc +135 silly gunzTarPerm extractEntry src/CanvasRenderingContext2d.h +136 silly gunzTarPerm extractEntry src/FontFace.cc +137 silly gunzTarPerm extractEntry src/FontFace.h +138 silly gunzTarPerm extractEntry src/Canvas.h +139 silly gunzTarPerm extractEntry src/Image.h +140 silly gunzTarPerm extractEntry src/ImageData.cc +141 silly gunzTarPerm extractEntry src/ImageData.h +142 silly gunzTarPerm extractEntry src/JPEGStream.h +143 silly gunzTarPerm extractEntry src/PNG.h +144 silly gunzTarPerm extractEntry src/Point.h +145 silly gunzTarPerm extractEntry src/closure.h +146 silly gunzTarPerm extractEntry src/color.cc +147 silly gunzTarPerm extractEntry src/color.h +148 silly gunzTarPerm extractEntry src/init.cc +149 silly gunzTarPerm extractEntry util/cairo_include.sh +150 silly gunzTarPerm extractEntry util/has_cairo_freetype.sh +151 silly gunzTarPerm extractEntry util/has_lib.sh +152 silly gunzTarPerm extractEntry util/lib_lookup.sh +153 verbose write writing to /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/package.json +154 info preinstall canvas@1.2.9 +155 verbose readDependencies loading dependencies from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/package.json +156 silly prepareForInstallMany adding nan@^2.0.9 from canvas dependencies +157 verbose readDependencies loading dependencies from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/package.json +158 silly cache add args [ 'nan@^2.0.9', null ] +159 verbose cache add spec nan@^2.0.9 +160 silly cache add parsed spec Result { +160 silly cache add raw: 'nan@^2.0.9', +160 silly cache add scope: null, +160 silly cache add name: 'nan', +160 silly cache add rawSpec: '^2.0.9', +160 silly cache add spec: '>=2.0.9 <3.0.0', +160 silly cache add type: 'range' } +161 silly addNamed nan@>=2.0.9 <3.0.0 +162 verbose addNamed ">=2.0.9 <3.0.0" is a valid semver range for nan +163 silly addNameRange { name: 'nan', range: '>=2.0.9 <3.0.0', hasData: false } +164 silly mapToRegistry name nan +165 silly mapToRegistry using default registry +166 silly mapToRegistry registry https://registry.npmjs.org/ +167 silly mapToRegistry uri https://registry.npmjs.org/nan +168 verbose addNameRange registry:https://registry.npmjs.org/nan not in flight; fetching +169 verbose request uri https://registry.npmjs.org/nan +170 verbose request no auth needed +171 info attempt registry request try #1 at 12:06:04 PM +172 verbose etag "1L4RU1AM541YSVP1YQFXG1Y1J" +173 http request GET https://registry.npmjs.org/nan +174 http 304 https://registry.npmjs.org/nan +175 silly get cb [ 304, +175 silly get { date: 'Tue, 29 Sep 2015 19:06:04 GMT', +175 silly get via: '1.1 varnish', +175 silly get 'cache-control': 'max-age=60', +175 silly get etag: '"1L4RU1AM541YSVP1YQFXG1Y1J"', +175 silly get age: '34', +175 silly get connection: 'keep-alive', +175 silly get 'x-served-by': 'cache-atl6225-ATL', +175 silly get 'x-cache': 'HIT', +175 silly get 'x-cache-hits': '2', +175 silly get 'x-timer': 'S1443553564.715367,VS0,VE0', +175 silly get vary: 'Accept' } ] +176 verbose etag https://registry.npmjs.org/nan from cache +177 verbose get saving nan to /Users/akhenry/.npm/registry.npmjs.org/nan/.cache.json +178 silly addNameRange number 2 { name: 'nan', range: '>=2.0.9 <3.0.0', hasData: true } +179 silly addNameRange versions [ 'nan', +179 silly addNameRange [ '0.3.0-wip', +179 silly addNameRange '0.3.0-wip2', +179 silly addNameRange '0.3.0', +179 silly addNameRange '0.3.1', +179 silly addNameRange '0.3.2', +179 silly addNameRange '0.4.0', +179 silly addNameRange '0.4.1', +179 silly addNameRange '0.4.2', +179 silly addNameRange '0.4.3', +179 silly addNameRange '0.4.4', +179 silly addNameRange '0.5.0', +179 silly addNameRange '0.5.1', +179 silly addNameRange '0.5.2', +179 silly addNameRange '0.6.0', +179 silly addNameRange '0.7.0', +179 silly addNameRange '0.7.1', +179 silly addNameRange '0.8.0', +179 silly addNameRange '1.0.0', +179 silly addNameRange '1.1.0', +179 silly addNameRange '1.1.1', +179 silly addNameRange '1.1.2', +179 silly addNameRange '1.2.0', +179 silly addNameRange '1.3.0', +179 silly addNameRange '1.4.0', +179 silly addNameRange '1.4.1', +179 silly addNameRange '1.5.0', +179 silly addNameRange '1.4.2', +179 silly addNameRange '1.4.3', +179 silly addNameRange '1.5.1', +179 silly addNameRange '1.5.2', +179 silly addNameRange '1.6.0', +179 silly addNameRange '1.5.3', +179 silly addNameRange '1.6.1', +179 silly addNameRange '1.6.2', +179 silly addNameRange '1.7.0', +179 silly addNameRange '1.8.0', +179 silly addNameRange '1.8.1', +179 silly addNameRange '1.8.2', +179 silly addNameRange '1.8.3', +179 silly addNameRange '1.8.4', +179 silly addNameRange '1.9.0', +179 silly addNameRange '2.0.0', +179 silly addNameRange '2.0.1', +179 silly addNameRange '2.0.2', +179 silly addNameRange '2.0.3', +179 silly addNameRange '2.0.4', +179 silly addNameRange '2.0.5', +179 silly addNameRange '2.0.6', +179 silly addNameRange '2.0.7', +179 silly addNameRange '2.0.8', +179 silly addNameRange '2.0.9' ] ] +180 silly addNamed nan@2.0.9 +181 verbose addNamed "2.0.9" is a plain semver version for nan +182 silly cache afterAdd nan@2.0.9 +183 verbose afterAdd /Users/akhenry/.npm/nan/2.0.9/package/package.json not in flight; writing +184 verbose afterAdd /Users/akhenry/.npm/nan/2.0.9/package/package.json written +185 silly install resolved [ { name: 'nan', +185 silly install resolved version: '2.0.9', +185 silly install resolved description: 'Native Abstractions for Node.js: C++ header for Node 0.8 -> 4 compatibility', +185 silly install resolved main: 'include_dirs.js', +185 silly install resolved repository: { type: 'git', url: 'git://github.com/nodejs/nan.git' }, +185 silly install resolved scripts: +185 silly install resolved { test: 'tap --gc test/js/*-test.js', +185 silly install resolved 'rebuild-tests': 'pangyp rebuild --msvs_version=2013 --directory test', +185 silly install resolved docs: 'doc/.build.sh' }, +185 silly install resolved contributors: +185 silly install resolved [ [Object], +185 silly install resolved [Object], +185 silly install resolved [Object], +185 silly install resolved [Object], +185 silly install resolved [Object], +185 silly install resolved [Object], +185 silly install resolved [Object] ], +185 silly install resolved devDependencies: +185 silly install resolved { bindings: '~1.2.1', +185 silly install resolved commander: '^2.8.1', +185 silly install resolved glob: '^5.0.14', +185 silly install resolved 'node-gyp': '~2.0.2', +185 silly install resolved pangyp: '~2.2.0', +185 silly install resolved tap: '~0.7.1', +185 silly install resolved xtend: '~4.0.0' }, +185 silly install resolved license: 'MIT', +185 silly install resolved bugs: { url: 'https://github.com/nodejs/nan/issues' }, +185 silly install resolved homepage: 'https://github.com/nodejs/nan#readme', +185 silly install resolved _id: 'nan@2.0.9', +185 silly install resolved _shasum: 'd02a770f46778842cceb94e17cab31ffc7234a05', +185 silly install resolved _resolved: 'https://registry.npmjs.org/nan/-/nan-2.0.9.tgz', +185 silly install resolved _from: 'nan@>=2.0.9 <3.0.0', +185 silly install resolved _npmVersion: '2.14.2', +185 silly install resolved _nodeVersion: '4.0.0', +185 silly install resolved _npmUser: { name: 'kkoopa', email: 'bbyholm@abo.fi' }, +185 silly install resolved maintainers: [ [Object], [Object] ], +185 silly install resolved dist: +185 silly install resolved { shasum: 'd02a770f46778842cceb94e17cab31ffc7234a05', +185 silly install resolved tarball: 'http://registry.npmjs.org/nan/-/nan-2.0.9.tgz' }, +185 silly install resolved directories: {}, +185 silly install resolved readme: 'ERROR: No README data found!' } ] +186 info install nan@2.0.9 into /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas +187 info installOne nan@2.0.9 +188 verbose installOne of nan to /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas not in flight; installing +189 verbose lock using /Users/akhenry/.npm/_locks/nan-994f20ebbf17b310.lock for /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/node_modules/nan +190 silly install write writing nan 2.0.9 to /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/node_modules/nan +191 verbose unbuild node_modules/canvas/node_modules/nan +192 silly gentlyRm /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/node_modules/nan is being purged from base /Users/akhenry/Code/openmctweb/openmctweb +193 verbose gentlyRm don't care about contents; nuking /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/node_modules/nan +194 verbose tar unpack /Users/akhenry/.npm/nan/2.0.9/package.tgz +195 verbose tar unpacking to /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/node_modules/nan +196 silly gentlyRm /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/node_modules/nan is being purged +197 verbose gentlyRm don't care about contents; nuking /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/node_modules/nan +198 silly gunzTarPerm modes [ '755', '644' ] +199 silly gunzTarPerm extractEntry package.json +200 silly gunzTarPerm modified mode [ 'package.json', 436, 420 ] +201 silly gunzTarPerm extractEntry README.md +202 silly gunzTarPerm modified mode [ 'README.md', 436, 420 ] +203 silly gunzTarPerm extractEntry include_dirs.js +204 silly gunzTarPerm modified mode [ 'include_dirs.js', 436, 420 ] +205 silly gunzTarPerm extractEntry nan_converters.h +206 silly gunzTarPerm modified mode [ 'nan_converters.h', 436, 420 ] +207 silly gunzTarPerm extractEntry LICENSE.md +208 silly gunzTarPerm modified mode [ 'LICENSE.md', 436, 420 ] +209 silly gunzTarPerm extractEntry .dntrc +210 silly gunzTarPerm modified mode [ '.dntrc', 436, 420 ] +211 silly gunzTarPerm extractEntry appveyor.yml +212 silly gunzTarPerm modified mode [ 'appveyor.yml', 436, 420 ] +213 silly gunzTarPerm extractEntry doc/new.md +214 silly gunzTarPerm modified mode [ 'doc/new.md', 436, 420 ] +215 silly gunzTarPerm extractEntry doc/.build.sh +216 silly gunzTarPerm modified mode [ 'doc/.build.sh', 509, 493 ] +217 silly gunzTarPerm extractEntry doc/buffers.md +218 silly gunzTarPerm modified mode [ 'doc/buffers.md', 436, 420 ] +219 silly gunzTarPerm extractEntry doc/callback.md +220 silly gunzTarPerm modified mode [ 'doc/callback.md', 436, 420 ] +221 silly gunzTarPerm extractEntry doc/converters.md +222 silly gunzTarPerm modified mode [ 'doc/converters.md', 436, 420 ] +223 silly gunzTarPerm extractEntry doc/errors.md +224 silly gunzTarPerm modified mode [ 'doc/errors.md', 436, 420 ] +225 silly gunzTarPerm extractEntry doc/maybe_types.md +226 silly gunzTarPerm modified mode [ 'doc/maybe_types.md', 436, 420 ] +227 silly gunzTarPerm extractEntry doc/methods.md +228 silly gunzTarPerm modified mode [ 'doc/methods.md', 436, 420 ] +229 silly gunzTarPerm extractEntry doc/asyncworker.md +230 silly gunzTarPerm modified mode [ 'doc/asyncworker.md', 436, 420 ] +231 silly gunzTarPerm extractEntry doc/node_misc.md +232 silly gunzTarPerm modified mode [ 'doc/node_misc.md', 436, 420 ] +233 silly gunzTarPerm extractEntry doc/persistent.md +234 silly gunzTarPerm modified mode [ 'doc/persistent.md', 436, 420 ] +235 silly gunzTarPerm extractEntry doc/scopes.md +236 silly gunzTarPerm modified mode [ 'doc/scopes.md', 436, 420 ] +237 silly gunzTarPerm extractEntry doc/script.md +238 silly gunzTarPerm modified mode [ 'doc/script.md', 436, 420 ] +239 silly gunzTarPerm extractEntry doc/string_bytes.md +240 silly gunzTarPerm modified mode [ 'doc/string_bytes.md', 436, 420 ] +241 silly gunzTarPerm extractEntry doc/v8_internals.md +242 silly gunzTarPerm modified mode [ 'doc/v8_internals.md', 436, 420 ] +243 silly gunzTarPerm extractEntry doc/v8_misc.md +244 silly gunzTarPerm modified mode [ 'doc/v8_misc.md', 436, 420 ] +245 silly gunzTarPerm extractEntry nan.h +246 silly gunzTarPerm modified mode [ 'nan.h', 436, 420 ] +247 silly gunzTarPerm extractEntry nan_callbacks.h +248 silly gunzTarPerm modified mode [ 'nan_callbacks.h', 436, 420 ] +249 silly gunzTarPerm extractEntry nan_callbacks_12_inl.h +250 silly gunzTarPerm modified mode [ 'nan_callbacks_12_inl.h', 436, 420 ] +251 silly gunzTarPerm extractEntry nan_callbacks_pre_12_inl.h +252 silly gunzTarPerm modified mode [ 'nan_callbacks_pre_12_inl.h', 436, 420 ] +253 silly gunzTarPerm extractEntry nan_converters_43_inl.h +254 silly gunzTarPerm modified mode [ 'nan_converters_43_inl.h', 436, 420 ] +255 silly gunzTarPerm extractEntry nan_converters_pre_43_inl.h +256 silly gunzTarPerm modified mode [ 'nan_converters_pre_43_inl.h', 436, 420 ] +257 silly gunzTarPerm extractEntry nan_implementation_12_inl.h +258 silly gunzTarPerm modified mode [ 'nan_implementation_12_inl.h', 436, 420 ] +259 silly gunzTarPerm extractEntry nan_implementation_pre_12_inl.h +260 silly gunzTarPerm modified mode [ 'nan_implementation_pre_12_inl.h', 436, 420 ] +261 silly gunzTarPerm extractEntry nan_maybe_43_inl.h +262 silly gunzTarPerm modified mode [ 'nan_maybe_43_inl.h', 436, 420 ] +263 silly gunzTarPerm extractEntry nan_maybe_pre_43_inl.h +264 silly gunzTarPerm modified mode [ 'nan_maybe_pre_43_inl.h', 436, 420 ] +265 silly gunzTarPerm extractEntry nan_new.h +266 silly gunzTarPerm modified mode [ 'nan_new.h', 436, 420 ] +267 silly gunzTarPerm extractEntry nan_object_wrap.h +268 silly gunzTarPerm modified mode [ 'nan_object_wrap.h', 436, 420 ] +269 silly gunzTarPerm extractEntry nan_persistent_12_inl.h +270 silly gunzTarPerm modified mode [ 'nan_persistent_12_inl.h', 436, 420 ] +271 silly gunzTarPerm extractEntry nan_persistent_pre_12_inl.h +272 silly gunzTarPerm modified mode [ 'nan_persistent_pre_12_inl.h', 436, 420 ] +273 silly gunzTarPerm extractEntry nan_string_bytes.h +274 silly gunzTarPerm modified mode [ 'nan_string_bytes.h', 436, 420 ] +275 silly gunzTarPerm extractEntry nan_weak.h +276 silly gunzTarPerm modified mode [ 'nan_weak.h', 436, 420 ] +277 silly gunzTarPerm extractEntry CHANGELOG.md +278 silly gunzTarPerm modified mode [ 'CHANGELOG.md', 436, 420 ] +279 silly gunzTarPerm extractEntry tools/package.json +280 silly gunzTarPerm modified mode [ 'tools/package.json', 436, 420 ] +281 silly gunzTarPerm extractEntry tools/README.md +282 silly gunzTarPerm modified mode [ 'tools/README.md', 436, 420 ] +283 silly gunzTarPerm extractEntry tools/1to2.js +284 silly gunzTarPerm modified mode [ 'tools/1to2.js', 509, 493 ] +285 verbose write writing to /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/node_modules/nan/package.json +286 info preinstall nan@2.0.9 +287 verbose readDependencies loading dependencies from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/node_modules/nan/package.json +288 verbose readDependencies loading dependencies from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/node_modules/nan/package.json +289 silly install resolved [] +290 verbose about to build /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/node_modules/nan +291 info build /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/node_modules/nan +292 info linkStuff nan@2.0.9 +293 silly linkStuff nan@2.0.9 has /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/node_modules as its parent node_modules +294 verbose linkBins nan@2.0.9 +295 verbose linkMans nan@2.0.9 +296 verbose rebuildBundles nan@2.0.9 +297 info install nan@2.0.9 +298 info postinstall nan@2.0.9 +299 verbose unlock done using /Users/akhenry/.npm/_locks/nan-994f20ebbf17b310.lock for /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/node_modules/nan +300 verbose about to build /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas +301 info build /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas +302 info linkStuff canvas@1.2.9 +303 silly linkStuff canvas@1.2.9 has /Users/akhenry/Code/openmctweb/openmctweb/node_modules as its parent node_modules +304 verbose linkBins canvas@1.2.9 +305 verbose linkMans canvas@1.2.9 +306 verbose rebuildBundles canvas@1.2.9 +307 verbose rebuildBundles [ 'nan' ] +308 info install canvas@1.2.9 +309 verbose unsafe-perm in lifecycle true +310 info canvas@1.2.9 Failed to exec install script +311 verbose unlock done using /Users/akhenry/.npm/_locks/canvas-3ca8f0170542eddb.lock for /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas +312 verbose stack Error: canvas@1.2.9 install: `node-gyp rebuild` +312 verbose stack Exit status 1 +312 verbose stack at EventEmitter. (/Users/akhenry/.nvm/versions/node/v4.1.1/lib/node_modules/npm/lib/utils/lifecycle.js:214:16) +312 verbose stack at emitTwo (events.js:87:13) +312 verbose stack at EventEmitter.emit (events.js:172:7) +312 verbose stack at ChildProcess. (/Users/akhenry/.nvm/versions/node/v4.1.1/lib/node_modules/npm/lib/utils/spawn.js:24:14) +312 verbose stack at emitTwo (events.js:87:13) +312 verbose stack at ChildProcess.emit (events.js:172:7) +312 verbose stack at maybeClose (internal/child_process.js:817:16) +312 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:211:5) +313 verbose pkgid canvas@1.2.9 +314 verbose cwd /Users/akhenry/Code/openmctweb/openmctweb +315 error Darwin 14.3.0 +316 error argv "/Users/akhenry/.nvm/versions/node/v4.1.1/bin/node" "/Users/akhenry/.nvm/versions/node/v4.1.1/bin/npm" "install" +317 error node v4.1.1 +318 error npm v2.14.4 +319 error code ELIFECYCLE +320 error canvas@1.2.9 install: `node-gyp rebuild` +320 error Exit status 1 +321 error Failed at the canvas@1.2.9 install script 'node-gyp rebuild'. +321 error This is most likely a problem with the canvas package, +321 error not with npm itself. +321 error Tell the author that this fails on your system: +321 error node-gyp rebuild +321 error You can get their info via: +321 error npm owner ls canvas +321 error There is likely additional logging output above. +322 verbose exit [ 1, true ] +323 verbose unbuild node_modules/canvas +324 info preuninstall canvas@1.2.9 +325 info uninstall canvas@1.2.9 +326 verbose unbuild rmStuff canvas@1.2.9 from /Users/akhenry/Code/openmctweb/openmctweb/node_modules +327 info postuninstall canvas@1.2.9 +328 silly gentlyRm /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas is being purged from base /Users/akhenry/Code/openmctweb/openmctweb +329 verbose gentlyRm don't care about contents; nuking /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas +330 silly vacuum-fs purging /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas +331 silly vacuum-fs quitting because other entries in /Users/akhenry/Code/openmctweb/openmctweb/node_modules diff --git a/platform/features/plot/src/SubPlot.js b/platform/features/plot/src/SubPlot.js index 06b7f7bb0f..72e1ac252f 100644 --- a/platform/features/plot/src/SubPlot.js +++ b/platform/features/plot/src/SubPlot.js @@ -159,10 +159,10 @@ define( var tickGenerator = new PlotTickGenerator(this.panZoomStack, this.formatter); - this.domainTicks = - tickGenerator.generateDomainTicks(DOMAIN_TICKS); - this.rangeTicks = - tickGenerator.generateRangeTicks(RANGE_TICKS); + this.domainTicks = + tickGenerator.generateDomainTicks(DOMAIN_TICKS); + this.rangeTicks = + tickGenerator.generateRangeTicks(RANGE_TICKS); }; SubPlot.prototype.updatePan = function () { From 3cf62ded08b46ec0611363655c1001ccdcb0474d Mon Sep 17 00:00:00 2001 From: Henry Date: Thu, 1 Oct 2015 13:28:24 -0700 Subject: [PATCH 15/26] Plot axes do not show labels when no data Added semicolon Added test for hasDomainData() Added test for negative case on domain data check Removed label test due to mocked telemetry formatter Uncommented test commented by accident Removed extra space --- npm-debug.log | 605 ------------------ platform/features/plot/src/SubPlot.js | 23 +- .../plot/src/elements/PlotTickGenerator.js | 3 +- platform/features/plot/test/SubPlotSpec.js | 9 + 4 files changed, 29 insertions(+), 611 deletions(-) delete mode 100644 npm-debug.log diff --git a/npm-debug.log b/npm-debug.log deleted file mode 100644 index b5f08ae4db..0000000000 --- a/npm-debug.log +++ /dev/null @@ -1,605 +0,0 @@ -0 info it worked if it ends with ok -1 verbose cli [ '/Users/akhenry/.nvm/versions/node/v4.1.1/bin/node', -1 verbose cli '/Users/akhenry/.nvm/versions/node/v4.1.1/bin/npm', -1 verbose cli 'install' ] -2 info using npm@2.14.4 -3 info using node@v4.1.1 -4 verbose readDependencies loading dependencies from /Users/akhenry/Code/openmctweb/openmctweb/package.json -5 verbose install where, deps [ '/Users/akhenry/Code/openmctweb/openmctweb', -5 verbose install [ 'express', -5 verbose install 'minimist', -5 verbose install 'jasmine-core', -5 verbose install 'jsdoc', -5 verbose install 'jshint', -5 verbose install 'karma', -5 verbose install 'karma-chrome-launcher', -5 verbose install 'karma-cli', -5 verbose install 'karma-jasmine', -5 verbose install 'karma-phantomjs-launcher', -5 verbose install 'karma-requirejs', -5 verbose install 'requirejs', -5 verbose install 'marked', -5 verbose install 'glob', -5 verbose install 'split', -5 verbose install 'mkdirp', -5 verbose install 'nomnoml', -5 verbose install 'canvas' ] ] -6 verbose install where, peers [ '/Users/akhenry/Code/openmctweb/openmctweb', [] ] -7 verbose installManyTop reading for lifecycle /Users/akhenry/Code/openmctweb/openmctweb/package.json -8 info preinstall open-mct-web@0.7.2 -9 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/express/package.json -10 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/glob/package.json -11 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/jasmine-core/package.json -12 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/jsdoc/package.json -13 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/jshint/package.json -14 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/karma/package.json -15 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/karma-chrome-launcher/package.json -16 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/karma-cli/package.json -17 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/karma-jasmine/package.json -18 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/karma-phantomjs-launcher/package.json -19 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/karma-requirejs/package.json -20 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/marked/package.json -21 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/minimist/package.json -22 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/mkdirp/package.json -23 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/nomnoml/package.json -24 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/requirejs/package.json -25 verbose installManyTop reading scoped package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/split/package.json -26 info package.json karma-phantomjs-launcher@0.1.4 No README data -27 info package.json karma-cli@0.0.4 No license field. -28 info package.json requirejs@2.1.20 No license field. -29 verbose readDependencies loading dependencies from /Users/akhenry/Code/openmctweb/openmctweb/package.json -30 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/express/package.json -31 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/glob/package.json -32 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/jasmine-core/package.json -33 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/jsdoc/package.json -34 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/jshint/package.json -35 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/karma/package.json -36 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/karma-chrome-launcher/package.json -37 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/karma-cli/package.json -38 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/karma-jasmine/package.json -39 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/karma-phantomjs-launcher/package.json -40 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/karma-requirejs/package.json -41 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/marked/package.json -42 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/minimist/package.json -43 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/mkdirp/package.json -44 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/nomnoml/package.json -45 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/requirejs/package.json -46 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/split/package.json -47 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/.bin/jsdoc/package.json -48 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/.bin/jshint/package.json -49 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/.bin/karma/package.json -50 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/.bin/marked/package.json -51 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/.bin/mkdirp/package.json -52 verbose targetResolver reading package data from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/.bin/r.js/package.json -53 verbose already installed skipping karma-phantomjs-launcher@^0.1.4 /Users/akhenry/Code/openmctweb/openmctweb -54 verbose already installed skipping karma-requirejs@^0.2.2 /Users/akhenry/Code/openmctweb/openmctweb -55 verbose already installed skipping requirejs@^2.1.17 /Users/akhenry/Code/openmctweb/openmctweb -56 verbose already installed skipping marked@^0.3.5 /Users/akhenry/Code/openmctweb/openmctweb -57 verbose already installed skipping glob@>= 3.0.0 /Users/akhenry/Code/openmctweb/openmctweb -58 verbose already installed skipping split@^1.0.0 /Users/akhenry/Code/openmctweb/openmctweb -59 verbose already installed skipping mkdirp@^0.5.1 /Users/akhenry/Code/openmctweb/openmctweb -60 verbose already installed skipping nomnoml@^0.0.3 /Users/akhenry/Code/openmctweb/openmctweb -61 silly cache add args [ 'canvas@^1.2.7', null ] -62 verbose cache add spec canvas@^1.2.7 -63 silly cache add parsed spec Result { -63 silly cache add raw: 'canvas@^1.2.7', -63 silly cache add scope: null, -63 silly cache add name: 'canvas', -63 silly cache add rawSpec: '^1.2.7', -63 silly cache add spec: '>=1.2.7 <2.0.0', -63 silly cache add type: 'range' } -64 silly addNamed canvas@>=1.2.7 <2.0.0 -65 verbose addNamed ">=1.2.7 <2.0.0" is a valid semver range for canvas -66 silly addNameRange { name: 'canvas', range: '>=1.2.7 <2.0.0', hasData: false } -67 silly mapToRegistry name canvas -68 silly mapToRegistry using default registry -69 silly mapToRegistry registry https://registry.npmjs.org/ -70 silly mapToRegistry uri https://registry.npmjs.org/canvas -71 verbose addNameRange registry:https://registry.npmjs.org/canvas not in flight; fetching -72 verbose already installed skipping express@^4.13.1 /Users/akhenry/Code/openmctweb/openmctweb -73 verbose request uri https://registry.npmjs.org/canvas -74 verbose request no auth needed -75 info attempt registry request try #1 at 12:06:03 PM -76 verbose request id 90b5a3876d185e3c -77 verbose etag "2CLU9W5YI8G9A3DFKVCS7J0EK" -78 http request GET https://registry.npmjs.org/canvas -79 verbose already installed skipping minimist@^1.1.1 /Users/akhenry/Code/openmctweb/openmctweb -80 verbose already installed skipping jasmine-core@^2.3.0 /Users/akhenry/Code/openmctweb/openmctweb -81 verbose already installed skipping jsdoc@^3.3.2 /Users/akhenry/Code/openmctweb/openmctweb -82 verbose already installed skipping jshint@^2.7.0 /Users/akhenry/Code/openmctweb/openmctweb -83 verbose already installed skipping karma@^0.12.31 /Users/akhenry/Code/openmctweb/openmctweb -84 verbose already installed skipping karma-chrome-launcher@^0.1.8 /Users/akhenry/Code/openmctweb/openmctweb -85 verbose already installed skipping karma-cli@0.0.4 /Users/akhenry/Code/openmctweb/openmctweb -86 verbose already installed skipping karma-jasmine@^0.1.5 /Users/akhenry/Code/openmctweb/openmctweb -87 http 304 https://registry.npmjs.org/canvas -88 silly get cb [ 304, -88 silly get { date: 'Tue, 29 Sep 2015 19:06:04 GMT', -88 silly get via: '1.1 varnish', -88 silly get 'cache-control': 'max-age=60', -88 silly get etag: '"2CLU9W5YI8G9A3DFKVCS7J0EK"', -88 silly get age: '48', -88 silly get connection: 'keep-alive', -88 silly get 'x-served-by': 'cache-atl6227-ATL', -88 silly get 'x-cache': 'HIT', -88 silly get 'x-cache-hits': '1', -88 silly get 'x-timer': 'S1443553564.269793,VS0,VE1', -88 silly get vary: 'Accept' } ] -89 verbose etag https://registry.npmjs.org/canvas from cache -90 verbose get saving canvas to /Users/akhenry/.npm/registry.npmjs.org/canvas/.cache.json -91 silly addNameRange number 2 { name: 'canvas', range: '>=1.2.7 <2.0.0', hasData: true } -92 silly addNameRange versions [ 'canvas', -92 silly addNameRange [ '0.0.1', -92 silly addNameRange '0.0.2', -92 silly addNameRange '0.0.3', -92 silly addNameRange '0.0.4', -92 silly addNameRange '0.0.5', -92 silly addNameRange '0.0.6', -92 silly addNameRange '0.0.7', -92 silly addNameRange '0.0.8', -92 silly addNameRange '0.1.0', -92 silly addNameRange '0.2.0', -92 silly addNameRange '0.2.1', -92 silly addNameRange '0.3.0', -92 silly addNameRange '0.3.1', -92 silly addNameRange '0.3.2', -92 silly addNameRange '0.3.3', -92 silly addNameRange '0.4.0', -92 silly addNameRange '0.4.1', -92 silly addNameRange '0.4.2', -92 silly addNameRange '0.4.3', -92 silly addNameRange '0.5.0', -92 silly addNameRange '0.5.1', -92 silly addNameRange '0.5.2', -92 silly addNameRange '0.5.3', -92 silly addNameRange '0.5.4', -92 silly addNameRange '0.6.0', -92 silly addNameRange '0.7.0', -92 silly addNameRange '0.7.1', -92 silly addNameRange '0.7.2', -92 silly addNameRange '0.7.3', -92 silly addNameRange '0.8.0', -92 silly addNameRange '0.8.1', -92 silly addNameRange '0.8.2', -92 silly addNameRange '0.8.3', -92 silly addNameRange '0.9.0', -92 silly addNameRange '0.10.0', -92 silly addNameRange '0.10.1', -92 silly addNameRange '0.10.2', -92 silly addNameRange '0.10.3', -92 silly addNameRange '0.11.0', -92 silly addNameRange '0.11.1', -92 silly addNameRange '0.11.2', -92 silly addNameRange '0.11.3', -92 silly addNameRange '0.12.0', -92 silly addNameRange '0.12.1', -92 silly addNameRange '0.13.0', -92 silly addNameRange '0.13.1', -92 silly addNameRange '1.0.0', -92 silly addNameRange '1.0.1', -92 silly addNameRange '1.0.2', -92 silly addNameRange '1.0.3', -92 silly addNameRange '1.0.4', -92 silly addNameRange '1.1.0', -92 silly addNameRange '1.1.1', -92 silly addNameRange '1.1.2', -92 silly addNameRange '1.1.3', -92 silly addNameRange '1.1.4', -92 silly addNameRange '1.1.5', -92 silly addNameRange '1.1.6', -92 silly addNameRange '1.2.0', -92 silly addNameRange '1.2.1', -92 silly addNameRange '1.2.2', -92 silly addNameRange '1.2.3', -92 silly addNameRange '1.2.4', -92 silly addNameRange '1.2.5', -92 silly addNameRange '1.2.6', -92 silly addNameRange '1.2.7', -92 silly addNameRange '1.2.8', -92 silly addNameRange '1.2.9' ] ] -93 silly addNamed canvas@1.2.9 -94 verbose addNamed "1.2.9" is a plain semver version for canvas -95 silly cache afterAdd canvas@1.2.9 -96 verbose afterAdd /Users/akhenry/.npm/canvas/1.2.9/package/package.json not in flight; writing -97 verbose afterAdd /Users/akhenry/.npm/canvas/1.2.9/package/package.json written -98 silly install resolved [ { name: 'canvas', -98 silly install resolved description: 'Canvas graphics API backed by Cairo', -98 silly install resolved version: '1.2.9', -98 silly install resolved author: { name: 'TJ Holowaychuk', email: 'tj@learnboost.com' }, -98 silly install resolved contributors: [ [Object], [Object], [Object] ], -98 silly install resolved keywords: -98 silly install resolved [ 'canvas', -98 silly install resolved 'graphic', -98 silly install resolved 'graphics', -98 silly install resolved 'pixman', -98 silly install resolved 'cairo', -98 silly install resolved 'image', -98 silly install resolved 'images', -98 silly install resolved 'pdf' ], -98 silly install resolved homepage: 'https://github.com/Automattic/node-canvas', -98 silly install resolved repository: -98 silly install resolved { type: 'git', -98 silly install resolved url: 'git://github.com/Automattic/node-canvas.git' }, -98 silly install resolved scripts: { test: 'make test', install: 'node-gyp rebuild' }, -98 silly install resolved dependencies: { nan: '^2.0.9' }, -98 silly install resolved devDependencies: -98 silly install resolved { 'body-parser': '^1.13.3', -98 silly install resolved express: '^4.13.2', -98 silly install resolved jade: '^1.11.0', -98 silly install resolved mocha: '*' }, -98 silly install resolved engines: { node: '>=0.8.0' }, -98 silly install resolved main: './lib/canvas.js', -98 silly install resolved license: 'MIT', -98 silly install resolved gypfile: true, -98 silly install resolved gitHead: 'eb97ef838658ee7a9cafb44bb20f3253e044e42b', -98 silly install resolved bugs: { url: 'https://github.com/Automattic/node-canvas/issues' }, -98 silly install resolved _id: 'canvas@1.2.9', -98 silly install resolved _shasum: '40f36e8f34bea2283c944511dfb575d168003061', -98 silly install resolved _from: 'canvas@>=1.2.7 <2.0.0', -98 silly install resolved _npmVersion: '2.12.1', -98 silly install resolved _nodeVersion: '0.12.7', -98 silly install resolved _npmUser: { name: 'linusu', email: 'linus@folkdatorn.se' }, -98 silly install resolved maintainers: [ [Object], [Object], [Object], [Object], [Object], [Object] ], -98 silly install resolved dist: -98 silly install resolved { shasum: '40f36e8f34bea2283c944511dfb575d168003061', -98 silly install resolved tarball: 'http://registry.npmjs.org/canvas/-/canvas-1.2.9.tgz' }, -98 silly install resolved directories: {}, -98 silly install resolved _resolved: 'https://registry.npmjs.org/canvas/-/canvas-1.2.9.tgz', -98 silly install resolved readme: 'ERROR: No README data found!' } ] -99 info install canvas@1.2.9 into /Users/akhenry/Code/openmctweb/openmctweb -100 info installOne canvas@1.2.9 -101 verbose installOne of canvas to /Users/akhenry/Code/openmctweb/openmctweb not in flight; installing -102 verbose lock using /Users/akhenry/.npm/_locks/canvas-3ca8f0170542eddb.lock for /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas -103 silly install write writing canvas 1.2.9 to /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas -104 verbose unbuild node_modules/canvas -105 silly gentlyRm /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas is being purged from base /Users/akhenry/Code/openmctweb/openmctweb -106 verbose gentlyRm don't care about contents; nuking /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas -107 verbose tar unpack /Users/akhenry/.npm/canvas/1.2.9/package.tgz -108 verbose tar unpacking to /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas -109 silly gentlyRm /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas is being purged -110 verbose gentlyRm don't care about contents; nuking /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas -111 silly gunzTarPerm modes [ '755', '644' ] -112 silly gunzTarPerm extractEntry package.json -113 silly gunzTarPerm extractEntry .npmignore -114 silly gunzTarPerm extractEntry index.js -115 silly gunzTarPerm extractEntry History.md -116 silly gunzTarPerm extractEntry Makefile -117 silly gunzTarPerm extractEntry Readme.md -118 silly gunzTarPerm extractEntry binding.gyp -119 silly gunzTarPerm extractEntry .gitmodules -120 silly gunzTarPerm extractEntry install -121 silly gunzTarPerm extractEntry lib/bindings.js -122 silly gunzTarPerm extractEntry lib/canvas.js -123 silly gunzTarPerm extractEntry lib/context2d.js -124 silly gunzTarPerm extractEntry lib/image.js -125 silly gunzTarPerm extractEntry lib/jpegstream.js -126 silly gunzTarPerm extractEntry lib/pngstream.js -127 silly gunzTarPerm extractEntry .travis.yml -128 silly gunzTarPerm extractEntry src/Image.cc -129 silly gunzTarPerm extractEntry src/Canvas.cc -130 silly gunzTarPerm extractEntry src/CanvasGradient.cc -131 silly gunzTarPerm extractEntry src/CanvasGradient.h -132 silly gunzTarPerm extractEntry src/CanvasPattern.cc -133 silly gunzTarPerm extractEntry src/CanvasPattern.h -134 silly gunzTarPerm extractEntry src/CanvasRenderingContext2d.cc -135 silly gunzTarPerm extractEntry src/CanvasRenderingContext2d.h -136 silly gunzTarPerm extractEntry src/FontFace.cc -137 silly gunzTarPerm extractEntry src/FontFace.h -138 silly gunzTarPerm extractEntry src/Canvas.h -139 silly gunzTarPerm extractEntry src/Image.h -140 silly gunzTarPerm extractEntry src/ImageData.cc -141 silly gunzTarPerm extractEntry src/ImageData.h -142 silly gunzTarPerm extractEntry src/JPEGStream.h -143 silly gunzTarPerm extractEntry src/PNG.h -144 silly gunzTarPerm extractEntry src/Point.h -145 silly gunzTarPerm extractEntry src/closure.h -146 silly gunzTarPerm extractEntry src/color.cc -147 silly gunzTarPerm extractEntry src/color.h -148 silly gunzTarPerm extractEntry src/init.cc -149 silly gunzTarPerm extractEntry util/cairo_include.sh -150 silly gunzTarPerm extractEntry util/has_cairo_freetype.sh -151 silly gunzTarPerm extractEntry util/has_lib.sh -152 silly gunzTarPerm extractEntry util/lib_lookup.sh -153 verbose write writing to /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/package.json -154 info preinstall canvas@1.2.9 -155 verbose readDependencies loading dependencies from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/package.json -156 silly prepareForInstallMany adding nan@^2.0.9 from canvas dependencies -157 verbose readDependencies loading dependencies from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/package.json -158 silly cache add args [ 'nan@^2.0.9', null ] -159 verbose cache add spec nan@^2.0.9 -160 silly cache add parsed spec Result { -160 silly cache add raw: 'nan@^2.0.9', -160 silly cache add scope: null, -160 silly cache add name: 'nan', -160 silly cache add rawSpec: '^2.0.9', -160 silly cache add spec: '>=2.0.9 <3.0.0', -160 silly cache add type: 'range' } -161 silly addNamed nan@>=2.0.9 <3.0.0 -162 verbose addNamed ">=2.0.9 <3.0.0" is a valid semver range for nan -163 silly addNameRange { name: 'nan', range: '>=2.0.9 <3.0.0', hasData: false } -164 silly mapToRegistry name nan -165 silly mapToRegistry using default registry -166 silly mapToRegistry registry https://registry.npmjs.org/ -167 silly mapToRegistry uri https://registry.npmjs.org/nan -168 verbose addNameRange registry:https://registry.npmjs.org/nan not in flight; fetching -169 verbose request uri https://registry.npmjs.org/nan -170 verbose request no auth needed -171 info attempt registry request try #1 at 12:06:04 PM -172 verbose etag "1L4RU1AM541YSVP1YQFXG1Y1J" -173 http request GET https://registry.npmjs.org/nan -174 http 304 https://registry.npmjs.org/nan -175 silly get cb [ 304, -175 silly get { date: 'Tue, 29 Sep 2015 19:06:04 GMT', -175 silly get via: '1.1 varnish', -175 silly get 'cache-control': 'max-age=60', -175 silly get etag: '"1L4RU1AM541YSVP1YQFXG1Y1J"', -175 silly get age: '34', -175 silly get connection: 'keep-alive', -175 silly get 'x-served-by': 'cache-atl6225-ATL', -175 silly get 'x-cache': 'HIT', -175 silly get 'x-cache-hits': '2', -175 silly get 'x-timer': 'S1443553564.715367,VS0,VE0', -175 silly get vary: 'Accept' } ] -176 verbose etag https://registry.npmjs.org/nan from cache -177 verbose get saving nan to /Users/akhenry/.npm/registry.npmjs.org/nan/.cache.json -178 silly addNameRange number 2 { name: 'nan', range: '>=2.0.9 <3.0.0', hasData: true } -179 silly addNameRange versions [ 'nan', -179 silly addNameRange [ '0.3.0-wip', -179 silly addNameRange '0.3.0-wip2', -179 silly addNameRange '0.3.0', -179 silly addNameRange '0.3.1', -179 silly addNameRange '0.3.2', -179 silly addNameRange '0.4.0', -179 silly addNameRange '0.4.1', -179 silly addNameRange '0.4.2', -179 silly addNameRange '0.4.3', -179 silly addNameRange '0.4.4', -179 silly addNameRange '0.5.0', -179 silly addNameRange '0.5.1', -179 silly addNameRange '0.5.2', -179 silly addNameRange '0.6.0', -179 silly addNameRange '0.7.0', -179 silly addNameRange '0.7.1', -179 silly addNameRange '0.8.0', -179 silly addNameRange '1.0.0', -179 silly addNameRange '1.1.0', -179 silly addNameRange '1.1.1', -179 silly addNameRange '1.1.2', -179 silly addNameRange '1.2.0', -179 silly addNameRange '1.3.0', -179 silly addNameRange '1.4.0', -179 silly addNameRange '1.4.1', -179 silly addNameRange '1.5.0', -179 silly addNameRange '1.4.2', -179 silly addNameRange '1.4.3', -179 silly addNameRange '1.5.1', -179 silly addNameRange '1.5.2', -179 silly addNameRange '1.6.0', -179 silly addNameRange '1.5.3', -179 silly addNameRange '1.6.1', -179 silly addNameRange '1.6.2', -179 silly addNameRange '1.7.0', -179 silly addNameRange '1.8.0', -179 silly addNameRange '1.8.1', -179 silly addNameRange '1.8.2', -179 silly addNameRange '1.8.3', -179 silly addNameRange '1.8.4', -179 silly addNameRange '1.9.0', -179 silly addNameRange '2.0.0', -179 silly addNameRange '2.0.1', -179 silly addNameRange '2.0.2', -179 silly addNameRange '2.0.3', -179 silly addNameRange '2.0.4', -179 silly addNameRange '2.0.5', -179 silly addNameRange '2.0.6', -179 silly addNameRange '2.0.7', -179 silly addNameRange '2.0.8', -179 silly addNameRange '2.0.9' ] ] -180 silly addNamed nan@2.0.9 -181 verbose addNamed "2.0.9" is a plain semver version for nan -182 silly cache afterAdd nan@2.0.9 -183 verbose afterAdd /Users/akhenry/.npm/nan/2.0.9/package/package.json not in flight; writing -184 verbose afterAdd /Users/akhenry/.npm/nan/2.0.9/package/package.json written -185 silly install resolved [ { name: 'nan', -185 silly install resolved version: '2.0.9', -185 silly install resolved description: 'Native Abstractions for Node.js: C++ header for Node 0.8 -> 4 compatibility', -185 silly install resolved main: 'include_dirs.js', -185 silly install resolved repository: { type: 'git', url: 'git://github.com/nodejs/nan.git' }, -185 silly install resolved scripts: -185 silly install resolved { test: 'tap --gc test/js/*-test.js', -185 silly install resolved 'rebuild-tests': 'pangyp rebuild --msvs_version=2013 --directory test', -185 silly install resolved docs: 'doc/.build.sh' }, -185 silly install resolved contributors: -185 silly install resolved [ [Object], -185 silly install resolved [Object], -185 silly install resolved [Object], -185 silly install resolved [Object], -185 silly install resolved [Object], -185 silly install resolved [Object], -185 silly install resolved [Object] ], -185 silly install resolved devDependencies: -185 silly install resolved { bindings: '~1.2.1', -185 silly install resolved commander: '^2.8.1', -185 silly install resolved glob: '^5.0.14', -185 silly install resolved 'node-gyp': '~2.0.2', -185 silly install resolved pangyp: '~2.2.0', -185 silly install resolved tap: '~0.7.1', -185 silly install resolved xtend: '~4.0.0' }, -185 silly install resolved license: 'MIT', -185 silly install resolved bugs: { url: 'https://github.com/nodejs/nan/issues' }, -185 silly install resolved homepage: 'https://github.com/nodejs/nan#readme', -185 silly install resolved _id: 'nan@2.0.9', -185 silly install resolved _shasum: 'd02a770f46778842cceb94e17cab31ffc7234a05', -185 silly install resolved _resolved: 'https://registry.npmjs.org/nan/-/nan-2.0.9.tgz', -185 silly install resolved _from: 'nan@>=2.0.9 <3.0.0', -185 silly install resolved _npmVersion: '2.14.2', -185 silly install resolved _nodeVersion: '4.0.0', -185 silly install resolved _npmUser: { name: 'kkoopa', email: 'bbyholm@abo.fi' }, -185 silly install resolved maintainers: [ [Object], [Object] ], -185 silly install resolved dist: -185 silly install resolved { shasum: 'd02a770f46778842cceb94e17cab31ffc7234a05', -185 silly install resolved tarball: 'http://registry.npmjs.org/nan/-/nan-2.0.9.tgz' }, -185 silly install resolved directories: {}, -185 silly install resolved readme: 'ERROR: No README data found!' } ] -186 info install nan@2.0.9 into /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas -187 info installOne nan@2.0.9 -188 verbose installOne of nan to /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas not in flight; installing -189 verbose lock using /Users/akhenry/.npm/_locks/nan-994f20ebbf17b310.lock for /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/node_modules/nan -190 silly install write writing nan 2.0.9 to /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/node_modules/nan -191 verbose unbuild node_modules/canvas/node_modules/nan -192 silly gentlyRm /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/node_modules/nan is being purged from base /Users/akhenry/Code/openmctweb/openmctweb -193 verbose gentlyRm don't care about contents; nuking /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/node_modules/nan -194 verbose tar unpack /Users/akhenry/.npm/nan/2.0.9/package.tgz -195 verbose tar unpacking to /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/node_modules/nan -196 silly gentlyRm /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/node_modules/nan is being purged -197 verbose gentlyRm don't care about contents; nuking /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/node_modules/nan -198 silly gunzTarPerm modes [ '755', '644' ] -199 silly gunzTarPerm extractEntry package.json -200 silly gunzTarPerm modified mode [ 'package.json', 436, 420 ] -201 silly gunzTarPerm extractEntry README.md -202 silly gunzTarPerm modified mode [ 'README.md', 436, 420 ] -203 silly gunzTarPerm extractEntry include_dirs.js -204 silly gunzTarPerm modified mode [ 'include_dirs.js', 436, 420 ] -205 silly gunzTarPerm extractEntry nan_converters.h -206 silly gunzTarPerm modified mode [ 'nan_converters.h', 436, 420 ] -207 silly gunzTarPerm extractEntry LICENSE.md -208 silly gunzTarPerm modified mode [ 'LICENSE.md', 436, 420 ] -209 silly gunzTarPerm extractEntry .dntrc -210 silly gunzTarPerm modified mode [ '.dntrc', 436, 420 ] -211 silly gunzTarPerm extractEntry appveyor.yml -212 silly gunzTarPerm modified mode [ 'appveyor.yml', 436, 420 ] -213 silly gunzTarPerm extractEntry doc/new.md -214 silly gunzTarPerm modified mode [ 'doc/new.md', 436, 420 ] -215 silly gunzTarPerm extractEntry doc/.build.sh -216 silly gunzTarPerm modified mode [ 'doc/.build.sh', 509, 493 ] -217 silly gunzTarPerm extractEntry doc/buffers.md -218 silly gunzTarPerm modified mode [ 'doc/buffers.md', 436, 420 ] -219 silly gunzTarPerm extractEntry doc/callback.md -220 silly gunzTarPerm modified mode [ 'doc/callback.md', 436, 420 ] -221 silly gunzTarPerm extractEntry doc/converters.md -222 silly gunzTarPerm modified mode [ 'doc/converters.md', 436, 420 ] -223 silly gunzTarPerm extractEntry doc/errors.md -224 silly gunzTarPerm modified mode [ 'doc/errors.md', 436, 420 ] -225 silly gunzTarPerm extractEntry doc/maybe_types.md -226 silly gunzTarPerm modified mode [ 'doc/maybe_types.md', 436, 420 ] -227 silly gunzTarPerm extractEntry doc/methods.md -228 silly gunzTarPerm modified mode [ 'doc/methods.md', 436, 420 ] -229 silly gunzTarPerm extractEntry doc/asyncworker.md -230 silly gunzTarPerm modified mode [ 'doc/asyncworker.md', 436, 420 ] -231 silly gunzTarPerm extractEntry doc/node_misc.md -232 silly gunzTarPerm modified mode [ 'doc/node_misc.md', 436, 420 ] -233 silly gunzTarPerm extractEntry doc/persistent.md -234 silly gunzTarPerm modified mode [ 'doc/persistent.md', 436, 420 ] -235 silly gunzTarPerm extractEntry doc/scopes.md -236 silly gunzTarPerm modified mode [ 'doc/scopes.md', 436, 420 ] -237 silly gunzTarPerm extractEntry doc/script.md -238 silly gunzTarPerm modified mode [ 'doc/script.md', 436, 420 ] -239 silly gunzTarPerm extractEntry doc/string_bytes.md -240 silly gunzTarPerm modified mode [ 'doc/string_bytes.md', 436, 420 ] -241 silly gunzTarPerm extractEntry doc/v8_internals.md -242 silly gunzTarPerm modified mode [ 'doc/v8_internals.md', 436, 420 ] -243 silly gunzTarPerm extractEntry doc/v8_misc.md -244 silly gunzTarPerm modified mode [ 'doc/v8_misc.md', 436, 420 ] -245 silly gunzTarPerm extractEntry nan.h -246 silly gunzTarPerm modified mode [ 'nan.h', 436, 420 ] -247 silly gunzTarPerm extractEntry nan_callbacks.h -248 silly gunzTarPerm modified mode [ 'nan_callbacks.h', 436, 420 ] -249 silly gunzTarPerm extractEntry nan_callbacks_12_inl.h -250 silly gunzTarPerm modified mode [ 'nan_callbacks_12_inl.h', 436, 420 ] -251 silly gunzTarPerm extractEntry nan_callbacks_pre_12_inl.h -252 silly gunzTarPerm modified mode [ 'nan_callbacks_pre_12_inl.h', 436, 420 ] -253 silly gunzTarPerm extractEntry nan_converters_43_inl.h -254 silly gunzTarPerm modified mode [ 'nan_converters_43_inl.h', 436, 420 ] -255 silly gunzTarPerm extractEntry nan_converters_pre_43_inl.h -256 silly gunzTarPerm modified mode [ 'nan_converters_pre_43_inl.h', 436, 420 ] -257 silly gunzTarPerm extractEntry nan_implementation_12_inl.h -258 silly gunzTarPerm modified mode [ 'nan_implementation_12_inl.h', 436, 420 ] -259 silly gunzTarPerm extractEntry nan_implementation_pre_12_inl.h -260 silly gunzTarPerm modified mode [ 'nan_implementation_pre_12_inl.h', 436, 420 ] -261 silly gunzTarPerm extractEntry nan_maybe_43_inl.h -262 silly gunzTarPerm modified mode [ 'nan_maybe_43_inl.h', 436, 420 ] -263 silly gunzTarPerm extractEntry nan_maybe_pre_43_inl.h -264 silly gunzTarPerm modified mode [ 'nan_maybe_pre_43_inl.h', 436, 420 ] -265 silly gunzTarPerm extractEntry nan_new.h -266 silly gunzTarPerm modified mode [ 'nan_new.h', 436, 420 ] -267 silly gunzTarPerm extractEntry nan_object_wrap.h -268 silly gunzTarPerm modified mode [ 'nan_object_wrap.h', 436, 420 ] -269 silly gunzTarPerm extractEntry nan_persistent_12_inl.h -270 silly gunzTarPerm modified mode [ 'nan_persistent_12_inl.h', 436, 420 ] -271 silly gunzTarPerm extractEntry nan_persistent_pre_12_inl.h -272 silly gunzTarPerm modified mode [ 'nan_persistent_pre_12_inl.h', 436, 420 ] -273 silly gunzTarPerm extractEntry nan_string_bytes.h -274 silly gunzTarPerm modified mode [ 'nan_string_bytes.h', 436, 420 ] -275 silly gunzTarPerm extractEntry nan_weak.h -276 silly gunzTarPerm modified mode [ 'nan_weak.h', 436, 420 ] -277 silly gunzTarPerm extractEntry CHANGELOG.md -278 silly gunzTarPerm modified mode [ 'CHANGELOG.md', 436, 420 ] -279 silly gunzTarPerm extractEntry tools/package.json -280 silly gunzTarPerm modified mode [ 'tools/package.json', 436, 420 ] -281 silly gunzTarPerm extractEntry tools/README.md -282 silly gunzTarPerm modified mode [ 'tools/README.md', 436, 420 ] -283 silly gunzTarPerm extractEntry tools/1to2.js -284 silly gunzTarPerm modified mode [ 'tools/1to2.js', 509, 493 ] -285 verbose write writing to /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/node_modules/nan/package.json -286 info preinstall nan@2.0.9 -287 verbose readDependencies loading dependencies from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/node_modules/nan/package.json -288 verbose readDependencies loading dependencies from /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/node_modules/nan/package.json -289 silly install resolved [] -290 verbose about to build /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/node_modules/nan -291 info build /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/node_modules/nan -292 info linkStuff nan@2.0.9 -293 silly linkStuff nan@2.0.9 has /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/node_modules as its parent node_modules -294 verbose linkBins nan@2.0.9 -295 verbose linkMans nan@2.0.9 -296 verbose rebuildBundles nan@2.0.9 -297 info install nan@2.0.9 -298 info postinstall nan@2.0.9 -299 verbose unlock done using /Users/akhenry/.npm/_locks/nan-994f20ebbf17b310.lock for /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas/node_modules/nan -300 verbose about to build /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas -301 info build /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas -302 info linkStuff canvas@1.2.9 -303 silly linkStuff canvas@1.2.9 has /Users/akhenry/Code/openmctweb/openmctweb/node_modules as its parent node_modules -304 verbose linkBins canvas@1.2.9 -305 verbose linkMans canvas@1.2.9 -306 verbose rebuildBundles canvas@1.2.9 -307 verbose rebuildBundles [ 'nan' ] -308 info install canvas@1.2.9 -309 verbose unsafe-perm in lifecycle true -310 info canvas@1.2.9 Failed to exec install script -311 verbose unlock done using /Users/akhenry/.npm/_locks/canvas-3ca8f0170542eddb.lock for /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas -312 verbose stack Error: canvas@1.2.9 install: `node-gyp rebuild` -312 verbose stack Exit status 1 -312 verbose stack at EventEmitter. (/Users/akhenry/.nvm/versions/node/v4.1.1/lib/node_modules/npm/lib/utils/lifecycle.js:214:16) -312 verbose stack at emitTwo (events.js:87:13) -312 verbose stack at EventEmitter.emit (events.js:172:7) -312 verbose stack at ChildProcess. (/Users/akhenry/.nvm/versions/node/v4.1.1/lib/node_modules/npm/lib/utils/spawn.js:24:14) -312 verbose stack at emitTwo (events.js:87:13) -312 verbose stack at ChildProcess.emit (events.js:172:7) -312 verbose stack at maybeClose (internal/child_process.js:817:16) -312 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:211:5) -313 verbose pkgid canvas@1.2.9 -314 verbose cwd /Users/akhenry/Code/openmctweb/openmctweb -315 error Darwin 14.3.0 -316 error argv "/Users/akhenry/.nvm/versions/node/v4.1.1/bin/node" "/Users/akhenry/.nvm/versions/node/v4.1.1/bin/npm" "install" -317 error node v4.1.1 -318 error npm v2.14.4 -319 error code ELIFECYCLE -320 error canvas@1.2.9 install: `node-gyp rebuild` -320 error Exit status 1 -321 error Failed at the canvas@1.2.9 install script 'node-gyp rebuild'. -321 error This is most likely a problem with the canvas package, -321 error not with npm itself. -321 error Tell the author that this fails on your system: -321 error node-gyp rebuild -321 error You can get their info via: -321 error npm owner ls canvas -321 error There is likely additional logging output above. -322 verbose exit [ 1, true ] -323 verbose unbuild node_modules/canvas -324 info preuninstall canvas@1.2.9 -325 info uninstall canvas@1.2.9 -326 verbose unbuild rmStuff canvas@1.2.9 from /Users/akhenry/Code/openmctweb/openmctweb/node_modules -327 info postuninstall canvas@1.2.9 -328 silly gentlyRm /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas is being purged from base /Users/akhenry/Code/openmctweb/openmctweb -329 verbose gentlyRm don't care about contents; nuking /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas -330 silly vacuum-fs purging /Users/akhenry/Code/openmctweb/openmctweb/node_modules/canvas -331 silly vacuum-fs quitting because other entries in /Users/akhenry/Code/openmctweb/openmctweb/node_modules diff --git a/platform/features/plot/src/SubPlot.js b/platform/features/plot/src/SubPlot.js index 72e1ac252f..dfcaadf352 100644 --- a/platform/features/plot/src/SubPlot.js +++ b/platform/features/plot/src/SubPlot.js @@ -64,6 +64,16 @@ define( this.updateTicks(); } + /** + * Tests whether this subplot has domain data to show for the current pan/zoom level. Absence of domain data + * implies that there is no range data displayed either + * @returns {boolean} true if domain data exists for the current pan/zoom level + */ + SubPlot.prototype.hasDomainData = function() { + return this.panZoomStack + && this.panZoomStack.getDimensions()[0] > 0; + }; + // Utility function for filtering out empty strings. function isNonEmpty(v) { return typeof v === 'string' && v !== ""; @@ -159,10 +169,10 @@ define( var tickGenerator = new PlotTickGenerator(this.panZoomStack, this.formatter); - this.domainTicks = - tickGenerator.generateDomainTicks(DOMAIN_TICKS); - this.rangeTicks = - tickGenerator.generateRangeTicks(RANGE_TICKS); + this.domainTicks = + tickGenerator.generateDomainTicks(DOMAIN_TICKS); + this.rangeTicks = + tickGenerator.generateRangeTicks(RANGE_TICKS); }; SubPlot.prototype.updatePan = function () { @@ -253,7 +263,10 @@ define( this.hovering = true; this.subPlotBounds = $event.target.getBoundingClientRect(); this.mousePosition = this.toMousePosition($event); - this.updateHoverCoordinates(); + //If there is a domain to display, show hover coordinates, otherwise hover coordinates are meaningless + if (this.hasDomainData()) { + this.updateHoverCoordinates(); + } if (this.marqueeStart) { this.updateMarqueeBox(); } diff --git a/platform/features/plot/src/elements/PlotTickGenerator.js b/platform/features/plot/src/elements/PlotTickGenerator.js index af18050955..f759b6bcd6 100644 --- a/platform/features/plot/src/elements/PlotTickGenerator.js +++ b/platform/features/plot/src/elements/PlotTickGenerator.js @@ -53,7 +53,8 @@ define( for (i = 0; i < count; i += 1) { result.push({ - label: format(i * step + start) + //If data to show, display label for each tick line, otherwise show lines but suppress labels. + label: span > 0 ? format(i * step + start) : '' }); } diff --git a/platform/features/plot/test/SubPlotSpec.js b/platform/features/plot/test/SubPlotSpec.js index 58cd19faab..f7a7b667e9 100644 --- a/platform/features/plot/test/SubPlotSpec.js +++ b/platform/features/plot/test/SubPlotSpec.js @@ -157,6 +157,15 @@ define( ); }); + it ("indicates when there is domain data shown", function () { + expect(subplot.hasDomainData()).toEqual(true); + }); + + it ("indicates when there is no domain data shown", function () { + mockPanZoomStack.getDimensions.andReturn([0,0]); + expect(subplot.hasDomainData()).toEqual(false); + }); + it("disallows marquee zoom when start and end Marquee is at the same position", function () { expect(mockPanZoomStack.pushPanZoom).not.toHaveBeenCalled(); From cc19a0acba672df57b417c002900a9bd34f5a1e2 Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Thu, 8 Oct 2015 15:51:11 -0700 Subject: [PATCH 16/26] [Time Conductor] Enforce minimum inner span nasa/openmctweb#151. --- .../commonUI/general/src/controllers/TimeRangeController.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/platform/commonUI/general/src/controllers/TimeRangeController.js b/platform/commonUI/general/src/controllers/TimeRangeController.js index ac111ab1a9..60df6343bb 100644 --- a/platform/commonUI/general/src/controllers/TimeRangeController.js +++ b/platform/commonUI/general/src/controllers/TimeRangeController.js @@ -34,6 +34,7 @@ define( */ function TimeConductorController($scope, now) { var tickCount = 2, + innerMinimum = 1000, // 1 second initialDragValue; function formatTimestamp(ts) { @@ -139,7 +140,7 @@ define( $scope.ngModel.inner.start = clamp( initialDragValue + delta, $scope.ngModel.outer.start, - $scope.ngModel.inner.end + $scope.ngModel.inner.end - innerMinimum ); updateViewFromModel($scope.ngModel); } @@ -148,7 +149,7 @@ define( var delta = toMillis(pixels); $scope.ngModel.inner.end = clamp( initialDragValue + delta, - $scope.ngModel.inner.start, + $scope.ngModel.inner.start + innerMinimum, $scope.ngModel.outer.end ); updateViewFromModel($scope.ngModel); From f738f84075dd8509f6946dd7c9ed06aa5ccba8bf Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Thu, 8 Oct 2015 16:02:47 -0700 Subject: [PATCH 17/26] [Time Conductor] Enforce minimum outer span --- .../src/controllers/TimeRangeController.js | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/platform/commonUI/general/src/controllers/TimeRangeController.js b/platform/commonUI/general/src/controllers/TimeRangeController.js index 60df6343bb..c3ded37832 100644 --- a/platform/commonUI/general/src/controllers/TimeRangeController.js +++ b/platform/commonUI/general/src/controllers/TimeRangeController.js @@ -34,7 +34,8 @@ define( */ function TimeConductorController($scope, now) { var tickCount = 2, - innerMinimum = 1000, // 1 second + innerMinimumSpan = 1000, // 1 second + outerMinimumSpan = 1000 * 60 * 60, // 1 hour initialDragValue; function formatTimestamp(ts) { @@ -140,7 +141,7 @@ define( $scope.ngModel.inner.start = clamp( initialDragValue + delta, $scope.ngModel.outer.start, - $scope.ngModel.inner.end - innerMinimum + $scope.ngModel.inner.end - innerMinimumSpan ); updateViewFromModel($scope.ngModel); } @@ -149,7 +150,7 @@ define( var delta = toMillis(pixels); $scope.ngModel.inner.end = clamp( initialDragValue + delta, - $scope.ngModel.inner.start + innerMinimum, + $scope.ngModel.inner.start + innerMinimumSpan, $scope.ngModel.outer.end ); updateViewFromModel($scope.ngModel); @@ -175,8 +176,12 @@ define( function updateOuterStart(t) { var ngModel = $scope.ngModel; - ngModel.outer.end = - Math.max(ngModel.outer.start, ngModel.outer.end); + + ngModel.outer.end = Math.max( + ngModel.outer.start + outerMinimumSpan, + ngModel.outer.end + ); + ngModel.inner.start = Math.max(ngModel.outer.start, ngModel.inner.start); ngModel.inner.end = @@ -189,8 +194,12 @@ define( function updateOuterEnd(t) { var ngModel = $scope.ngModel; - ngModel.outer.start = - Math.min(ngModel.outer.end, ngModel.outer.start); + + ngModel.outer.start = Math.min( + ngModel.outer.end - outerMinimumSpan, + ngModel.outer.start + ); + ngModel.inner.start = Math.min(ngModel.outer.end, ngModel.inner.start); ngModel.inner.end = From ebd8fdeee3f7818d4ba49db787d18d2c0b171eff Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Fri, 9 Oct 2015 07:32:46 -0700 Subject: [PATCH 18/26] [Time Conductor] Enforce inner minimums on outer changes --- .../general/src/controllers/TimeRangeController.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/platform/commonUI/general/src/controllers/TimeRangeController.js b/platform/commonUI/general/src/controllers/TimeRangeController.js index c3ded37832..78655a90ae 100644 --- a/platform/commonUI/general/src/controllers/TimeRangeController.js +++ b/platform/commonUI/general/src/controllers/TimeRangeController.js @@ -184,8 +184,10 @@ define( ngModel.inner.start = Math.max(ngModel.outer.start, ngModel.inner.start); - ngModel.inner.end = - Math.max(ngModel.outer.start, ngModel.inner.end); + ngModel.inner.end = Math.max( + ngModel.inner.start + innerMinimumSpan, + ngModel.inner.end + ); $scope.startOuterText = formatTimestamp(t); @@ -200,10 +202,12 @@ define( ngModel.outer.start ); - ngModel.inner.start = - Math.min(ngModel.outer.end, ngModel.inner.start); ngModel.inner.end = Math.min(ngModel.outer.end, ngModel.inner.end); + ngModel.inner.start = Math.min( + ngModel.inner.end - innerMinimumSpan, + ngModel.inner.start + ); $scope.endOuterText = formatTimestamp(t); From 7532db5f4960f705f4c0dd8f923b987029cebe96 Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Fri, 9 Oct 2015 07:58:10 -0700 Subject: [PATCH 19/26] [Time Conductor] Add test cases Add test cases to TimeRangeController; testing existing functionality in the context of nasa/openmctweb#151 --- .../controllers/TimeRangeControllerSpec.js | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/platform/commonUI/general/test/controllers/TimeRangeControllerSpec.js b/platform/commonUI/general/test/controllers/TimeRangeControllerSpec.js index 48411756b0..2068b9bfdb 100644 --- a/platform/commonUI/general/test/controllers/TimeRangeControllerSpec.js +++ b/platform/commonUI/general/test/controllers/TimeRangeControllerSpec.js @@ -26,6 +26,11 @@ define( function (TimeRangeController) { "use strict"; + var SEC = 1000, + MIN = 60 * SEC, + HOUR = 60 * MIN, + DAY = 24 * HOUR; + describe("The TimeRangeController", function () { var mockScope, mockNow, @@ -61,6 +66,65 @@ define( .toHaveBeenCalledWith("ngModel", jasmine.any(Function)); }); + describe("when dragged", function () { + beforeEach(function () { + mockScope.ngModel = { + outer: { + start: DAY * 1000, + end: DAY * 1001 + }, + inner: { + start: DAY * 1000 + HOUR * 3, + end: DAY * 1001 - HOUR * 3 + } + }; + mockScope.spanWidth = 1000; + fireWatch("spanWidth", mockScope.spanWidth); + fireWatchCollection("ngModel", mockScope.ngModel); + }); + + it("updates the start time for left drags", function () { + mockScope.startLeftDrag(); + mockScope.leftDrag(250); + expect(mockScope.ngModel.inner.start) + .toEqual(DAY * 1000 + HOUR * 9); + }); + + it("updates the end time for right drags", function () { + mockScope.startRightDrag(); + mockScope.rightDrag(-250); + expect(mockScope.ngModel.inner.end) + .toEqual(DAY * 1000 + HOUR * 15); + }); + + it("updates both start and end for middle drags", function () { + mockScope.startMiddleDrag(); + mockScope.middleDrag(-125); + expect(mockScope.ngModel.inner).toEqual({ + start: DAY * 1000, + end: DAY * 1000 + HOUR * 18 + }); + mockScope.middleDrag(250); + expect(mockScope.ngModel.inner).toEqual({ + start: DAY * 1000 + HOUR * 6, + end: DAY * 1001 + }); + }); + }); + + + + it("enforces a minimum inner span", function () { + + }); + + it("enforces a minimum outer span", function () { + + }); + + it("enforces a minimum inner span when outer span changes", function () { + + }); }); } From 520d17f9db11ea4bed9b3aec90c0e4681a966edf Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Fri, 9 Oct 2015 09:27:59 -0700 Subject: [PATCH 20/26] [Time Conductor] Test span constraints Verify that inner and outer spans do not become zero when user input might otherwise cause this. --- .../controllers/TimeRangeControllerSpec.js | 60 ++++++++++++++++--- 1 file changed, 51 insertions(+), 9 deletions(-) diff --git a/platform/commonUI/general/test/controllers/TimeRangeControllerSpec.js b/platform/commonUI/general/test/controllers/TimeRangeControllerSpec.js index 2068b9bfdb..9d7a6a9f52 100644 --- a/platform/commonUI/general/test/controllers/TimeRangeControllerSpec.js +++ b/platform/commonUI/general/test/controllers/TimeRangeControllerSpec.js @@ -110,20 +110,62 @@ define( end: DAY * 1001 }); }); + + it("enforces a minimum inner span", function () { + mockScope.startRightDrag(); + mockScope.rightDrag(-9999999); + expect(mockScope.ngModel.inner.end) + .toBeGreaterThan(mockScope.ngModel.inner.start); + }); }); + describe("when outer bounds are changed", function () { + beforeEach(function () { + mockScope.ngModel = { + outer: { + start: DAY * 1000, + end: DAY * 1001 + }, + inner: { + start: DAY * 1000 + HOUR * 3, + end: DAY * 1001 - HOUR * 3 + } + }; + mockScope.spanWidth = 1000; + fireWatch("spanWidth", mockScope.spanWidth); + fireWatchCollection("ngModel", mockScope.ngModel); + }); + it("enforces a minimum outer span", function () { + mockScope.ngModel.outer.end = + mockScope.ngModel.outer.start - DAY * 100; + fireWatch( + "ngModel.outer.end", + mockScope.ngModel.outer.end + ); + expect(mockScope.ngModel.outer.end) + .toBeGreaterThan(mockScope.ngModel.outer.start); - it("enforces a minimum inner span", function () { - - }); - - it("enforces a minimum outer span", function () { - - }); - - it("enforces a minimum inner span when outer span changes", function () { + mockScope.ngModel.outer.start = + mockScope.ngModel.outer.end + DAY * 100; + fireWatch( + "ngModel.outer.start", + mockScope.ngModel.outer.start + ); + expect(mockScope.ngModel.outer.end) + .toBeGreaterThan(mockScope.ngModel.outer.start); + }); + it("enforces a minimum inner span when outer span changes", function () { + mockScope.ngModel.outer.end = + mockScope.ngModel.outer.start - DAY * 100; + fireWatch( + "ngModel.outer.end", + mockScope.ngModel.outer.end + ); + expect(mockScope.ngModel.inner.end) + .toBeGreaterThan(mockScope.ngModel.inner.start); + }); }); }); From 28c42fcd4cf546864fdd86d7eee4385ef113be89 Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Fri, 9 Oct 2015 11:06:41 -0700 Subject: [PATCH 21/26] [Time Conductor] Fix merge issues Fix merge issues not addressed during conflict resolution. --- platform/features/conductor/src/ConductorRepresenter.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/platform/features/conductor/src/ConductorRepresenter.js b/platform/features/conductor/src/ConductorRepresenter.js index bce7f8841e..c6d18c9266 100644 --- a/platform/features/conductor/src/ConductorRepresenter.js +++ b/platform/features/conductor/src/ConductorRepresenter.js @@ -28,7 +28,7 @@ define( var CONDUCTOR_HEIGHT = "100px", TEMPLATE = [ - "", + "", "" ].join(''), THROTTLE_MS = 200, @@ -90,8 +90,9 @@ define( } function updateConductorInner() { - conductor.displayStart(conductorScope.conductor.inner.start); - conductor.displayEnd(conductorScope.conductor.inner.end); + var innerBounds = conductorScope.ngModel.conductor.inner; + conductor.displayStart(innerBounds.start); + conductor.displayEnd(innerBounds.end); lastObservedBounds = lastObservedBounds || bounds(); broadcastBounds(); } From 2accf21518ebae01295be23788c928d2143edffd Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Fri, 9 Oct 2015 11:08:02 -0700 Subject: [PATCH 22/26] [Time Conductor] Add missing semicolon ...to pass code style checks. --- platform/features/conductor/test/TimeConductorSpec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/features/conductor/test/TimeConductorSpec.js b/platform/features/conductor/test/TimeConductorSpec.js index 20769bf7da..c9336a93b0 100644 --- a/platform/features/conductor/test/TimeConductorSpec.js +++ b/platform/features/conductor/test/TimeConductorSpec.js @@ -38,7 +38,7 @@ define( testDomains = [ { key: "d1", name: "Domain #1" }, { key: "d2", name: "Domain #2" } - ] + ]; conductor = new TimeConductor(testStart, testEnd, testDomains); }); From 5763511ec87145ded37e177de601897fa4075f37 Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Fri, 9 Oct 2015 11:17:57 -0700 Subject: [PATCH 23/26] [Time Conductor] Update specs Update specs to reflect merge of latest from master into topic branch for nasa/openmctweb#115, domain selector. --- .../test/ConductorRepresenterSpec.js | 27 ++++++----- .../test/ConductorTelemetryDecoratorSpec.js | 48 +++++++++---------- .../conductor/test/TestTimeConductor.js | 2 + 3 files changed, 40 insertions(+), 37 deletions(-) diff --git a/platform/features/conductor/test/ConductorRepresenterSpec.js b/platform/features/conductor/test/ConductorRepresenterSpec.js index 0f152077d2..5d78c8a720 100644 --- a/platform/features/conductor/test/ConductorRepresenterSpec.js +++ b/platform/features/conductor/test/ConductorRepresenterSpec.js @@ -129,11 +129,12 @@ define( it("exposes conductor state in scope", function () { mockConductor.displayStart.andReturn(1977); mockConductor.displayEnd.andReturn(1984); + mockConductor.domain.andReturn('d'); representer.represent(testViews[0], {}); expect(mockNewScope.ngModel.conductor).toEqual({ - inner: { start: 1977, end: 1984 }, - outer: { start: 1977, end: 1984 } + inner: { start: 1977, end: 1984, domain: 'd' }, + outer: { start: 1977, end: 1984, domain: 'd' } }); }); @@ -163,7 +164,9 @@ define( }); describe("when bounds are changing", function () { - var mockThrottledFn = jasmine.createSpy('throttledFn'), + var startWatch = "ngModel.conductor.inner.start", + endWatch = "ngModel.conductor.inner.end", + mockThrottledFn = jasmine.createSpy('throttledFn'), testBounds; function fireThrottledFn() { @@ -174,7 +177,7 @@ define( mockThrottle.andReturn(mockThrottledFn); representer.represent(testViews[0], {}); testBounds = { start: 0, end: 1000 }; - mockNewScope.conductor.inner = testBounds; + mockNewScope.ngModel.conductor.inner = testBounds; mockConductor.displayStart.andCallFake(function () { return testBounds.start; }); @@ -186,14 +189,14 @@ define( it("does not broadcast while bounds are changing", function () { expect(mockScope.$broadcast).not.toHaveBeenCalled(); testBounds.start = 100; - fireWatch(mockNewScope, 'conductor.inner.start', testBounds.start); + fireWatch(mockNewScope, startWatch, testBounds.start); testBounds.end = 500; - fireWatch(mockNewScope, 'conductor.inner.end', testBounds.end); + fireWatch(mockNewScope, endWatch, testBounds.end); fireThrottledFn(); testBounds.start = 200; - fireWatch(mockNewScope, 'conductor.inner.start', testBounds.start); + fireWatch(mockNewScope, startWatch, testBounds.start); testBounds.end = 400; - fireWatch(mockNewScope, 'conductor.inner.end', testBounds.end); + fireWatch(mockNewScope, endWatch, testBounds.end); fireThrottledFn(); expect(mockScope.$broadcast).not.toHaveBeenCalled(); }); @@ -201,12 +204,12 @@ define( it("does broadcast when bounds have stabilized", function () { expect(mockScope.$broadcast).not.toHaveBeenCalled(); testBounds.start = 100; - fireWatch(mockNewScope, 'conductor.inner.start', testBounds.start); + fireWatch(mockNewScope, startWatch, testBounds.start); testBounds.end = 500; - fireWatch(mockNewScope, 'conductor.inner.end', testBounds.end); + fireWatch(mockNewScope, endWatch, testBounds.end); fireThrottledFn(); - fireWatch(mockNewScope, 'conductor.inner.start', testBounds.start); - fireWatch(mockNewScope, 'conductor.inner.end', testBounds.end); + fireWatch(mockNewScope, startWatch, testBounds.start); + fireWatch(mockNewScope, endWatch, testBounds.end); fireThrottledFn(); expect(mockScope.$broadcast).toHaveBeenCalled(); }); diff --git a/platform/features/conductor/test/ConductorTelemetryDecoratorSpec.js b/platform/features/conductor/test/ConductorTelemetryDecoratorSpec.js index a99bcabcd0..6e768419c1 100644 --- a/platform/features/conductor/test/ConductorTelemetryDecoratorSpec.js +++ b/platform/features/conductor/test/ConductorTelemetryDecoratorSpec.js @@ -75,8 +75,6 @@ define( return j * j * j; }); - mockConductor.queryStart.andReturn(-12321); - mockConductor.queryEnd.andReturn(-12321); mockConductor.displayStart.andReturn(42); mockConductor.displayEnd.andReturn(1977); mockConductor.domain.andReturn("testDomain"); @@ -132,29 +130,29 @@ define( expect(request.domain).toEqual(mockConductor.domain()); }); }); -// -// it("adds display start/end times & domain selection to historical requests", function () { -// decorator.requestTelemetry([{ someKey: "some value" }]); -// expect(mockTelemetryService.requestTelemetry) -// .toHaveBeenCalledWith([{ -// someKey: "some value", -// start: mockConductor.displayStart(), -// end: mockConductor.displayEnd(), -// domain: jasmine.any(String) -// }]); -// }); -// -// it("adds display start/end times & domain selection to subscription requests", function () { -// var mockCallback = jasmine.createSpy('callback'); -// decorator.subscribe(mockCallback, [{ someKey: "some value" }]); -// expect(mockTelemetryService.subscribe) -// .toHaveBeenCalledWith(jasmine.any(Function), [{ -// someKey: "some value", -// start: mockConductor.displayStart(), -// end: mockConductor.displayEnd(), -// domain: jasmine.any(String) -// }]); -// }); + + it("adds display start/end times & domain selection to historical requests", function () { + decorator.requestTelemetry([{ someKey: "some value" }]); + expect(mockTelemetryService.requestTelemetry) + .toHaveBeenCalledWith([{ + someKey: "some value", + start: mockConductor.displayStart(), + end: mockConductor.displayEnd(), + domain: jasmine.any(String) + }]); + }); + + it("adds display start/end times & domain selection to subscription requests", function () { + var mockCallback = jasmine.createSpy('callback'); + decorator.subscribe(mockCallback, [{ someKey: "some value" }]); + expect(mockTelemetryService.subscribe) + .toHaveBeenCalledWith(jasmine.any(Function), [{ + someKey: "some value", + start: mockConductor.displayStart(), + end: mockConductor.displayEnd(), + domain: jasmine.any(String) + }]); + }); }); diff --git a/platform/features/conductor/test/TestTimeConductor.js b/platform/features/conductor/test/TestTimeConductor.js index 5c8b95896f..01fed0c8fd 100644 --- a/platform/features/conductor/test/TestTimeConductor.js +++ b/platform/features/conductor/test/TestTimeConductor.js @@ -24,6 +24,8 @@ define( ["../src/TimeConductor"], function (TimeConductor) { + 'use strict'; + function TestTimeConductor() { var self = this; From 9cc0c0b06fcb8016ac9bbd6d21879af83df68361 Mon Sep 17 00:00:00 2001 From: Charles Hacskaylo Date: Wed, 14 Oct 2015 10:25:05 -0700 Subject: [PATCH 24/26] [Frontend] Polishing of styles for time-controller open #179 open #180 Font-size normalized for time-controller and domain selector; Layout of object-holder and time-controller fixed; --- .../general/res/sass/controls/_controls.scss | 2 +- .../res/sass/controls/_time-controller.scss | 17 +- .../res/sass/user-environ/_layout.scss | 4 +- .../templates/controls/time-controller.html | 2 +- .../espresso/res/css/theme-espresso.css | 435 +++++++++--------- .../themes/snow/res/css/theme-snow.css | 435 +++++++++--------- .../conductor/src/ConductorRepresenter.js | 5 +- 7 files changed, 460 insertions(+), 440 deletions(-) diff --git a/platform/commonUI/general/res/sass/controls/_controls.scss b/platform/commonUI/general/res/sass/controls/_controls.scss index f5dc2e102f..eef87c3439 100644 --- a/platform/commonUI/general/res/sass/controls/_controls.scss +++ b/platform/commonUI/general/res/sass/controls/_controls.scss @@ -356,7 +356,7 @@ label.checkbox.custom { .l-month-year-pager { $pagerW: 20px; //@include test(); - font-size: 0.8rem; + //font-size: 0.8rem; height: $r1H; margin-bottom: $interiorMargin; position: relative; diff --git a/platform/commonUI/general/res/sass/controls/_time-controller.scss b/platform/commonUI/general/res/sass/controls/_time-controller.scss index 2167518494..75f9c2a872 100644 --- a/platform/commonUI/general/res/sass/controls/_time-controller.scss +++ b/platform/commonUI/general/res/sass/controls/_time-controller.scss @@ -10,8 +10,8 @@ } -.l-time-controller { - $minW: 400px; +mct-include.l-time-controller { + $minW: 500px; $knobHOffset: 0px; $knobM: ($sliderKnobW + $knobHOffset) * -1; $rangeValPad: $interiorMargin; @@ -22,11 +22,17 @@ $r2H: nth($ueTimeControlH,2); $r3H: nth($ueTimeControlH,3); - //height: $r1H + $r2H + $r3H + ($interiorMargin * 2); + @include absPosDefault(); + //@include test(); + display: block; + top: auto; + height: $r1H + $r2H + $r3H + ($interiorMargin * 2); + min-width: $minW; + font-size: 0.8rem; .l-time-range-inputs-holder, .l-time-range-slider { - font-size: 0.8em; + //font-size: 0.8em; } .l-time-range-inputs-holder, @@ -36,7 +42,6 @@ //@include test(); @include absPosDefault(0, visible); @include box-sizing(border-box); - min-width: $minW; top: auto; } .l-time-range-slider, @@ -141,7 +146,7 @@ @include webkitProp(transform, translateX(-50%)); color: $colorPlotLabelFg; display: inline-block; - font-size: 0.7em; + font-size: 0.9em; position: absolute; top: 8px; white-space: nowrap; diff --git a/platform/commonUI/general/res/sass/user-environ/_layout.scss b/platform/commonUI/general/res/sass/user-environ/_layout.scss index bdfe716be3..0d8983c182 100644 --- a/platform/commonUI/general/res/sass/user-environ/_layout.scss +++ b/platform/commonUI/general/res/sass/user-environ/_layout.scss @@ -294,9 +294,7 @@ } &.l-controls-visible { &.l-time-controller-visible { - > ng-include { - bottom: nth($ueTimeControlH,1) + nth($ueTimeControlH,2) +nth($ueTimeControlH,3) + ($interiorMargin * 3); - } + bottom: nth($ueTimeControlH,1) + nth($ueTimeControlH,2) +nth($ueTimeControlH,3) + ($interiorMargin * 3); } } } diff --git a/platform/commonUI/general/res/templates/controls/time-controller.html b/platform/commonUI/general/res/templates/controls/time-controller.html index 61a4feedb8..ff142ea189 100644 --- a/platform/commonUI/general/res/templates/controls/time-controller.html +++ b/platform/commonUI/general/res/templates/controls/time-controller.html @@ -20,7 +20,7 @@ at runtime from the About dialog for additional information. --> -
+
C diff --git a/platform/commonUI/themes/espresso/res/css/theme-espresso.css b/platform/commonUI/themes/espresso/res/css/theme-espresso.css index 4950c5b6c2..d644a226ad 100644 --- a/platform/commonUI/themes/espresso/res/css/theme-espresso.css +++ b/platform/commonUI/themes/espresso/res/css/theme-espresso.css @@ -20,7 +20,7 @@ * this source code distribution or the Licensing information page available * at runtime from the About dialog for additional information. *****************************************************************************/ -/* line 5, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 5, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, @@ -41,38 +41,38 @@ time, mark, audio, video { font-size: 100%; vertical-align: baseline; } -/* line 22, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 22, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ html { line-height: 1; } -/* line 24, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 24, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ ol, ul { list-style: none; } -/* line 26, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 26, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ table { border-collapse: collapse; border-spacing: 0; } -/* line 28, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 28, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ caption, th, td { text-align: left; font-weight: normal; vertical-align: middle; } -/* line 30, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 30, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ q, blockquote { quotes: none; } - /* line 103, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ + /* line 103, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ q:before, q:after, blockquote:before, blockquote:after { content: ""; content: none; } -/* line 32, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 32, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ a img { border: none; } -/* line 116, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 116, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; } @@ -1938,7 +1938,6 @@ label.checkbox.custom { width: 230px; } /* line 356, ../../../../general/res/sass/controls/_controls.scss */ .l-datetime-picker .l-month-year-pager { - font-size: 0.8rem; height: 15px; margin-bottom: 5px; position: relative; } @@ -2378,206 +2377,216 @@ label.checkbox.custom { right: 0; width: auto; } -/* line 27, ../../../../general/res/sass/controls/_time-controller.scss */ -.l-time-controller .l-time-range-inputs-holder, -.l-time-controller .l-time-range-slider { - font-size: 0.8em; } -/* line 32, ../../../../general/res/sass/controls/_time-controller.scss */ -.l-time-controller .l-time-range-inputs-holder, -.l-time-controller .l-time-range-slider-holder, -.l-time-controller .l-time-range-ticks-holder { - overflow: visible; +/* line 13, ../../../../general/res/sass/controls/_time-controller.scss */ +mct-include.l-time-controller { + overflow: hidden; position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; width: auto; height: auto; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; - min-width: 400px; - top: auto; } -/* line 42, ../../../../general/res/sass/controls/_time-controller.scss */ -.l-time-controller .l-time-range-slider, -.l-time-controller .l-time-range-ticks { - overflow: visible; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - width: auto; - height: auto; - left: 150px; - right: 150px; } -/* line 49, ../../../../general/res/sass/controls/_time-controller.scss */ -.l-time-controller .l-time-range-inputs-holder { - height: 33px; - bottom: 46px; - padding-top: 5px; - border-top: 1px solid rgba(153, 153, 153, 0.1); } - /* line 54, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-inputs-holder .type-icon { - font-size: 120%; - vertical-align: middle; } - /* line 58, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-inputs-holder .l-time-range-input, - .l-time-controller .l-time-range-inputs-holder .l-time-range-inputs-elem { - margin-right: 5px; } - /* line 61, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-inputs-holder .l-time-range-input .lbl, - .l-time-controller .l-time-range-inputs-holder .l-time-range-inputs-elem .lbl { - color: #666666; } - /* line 64, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-inputs-holder .l-time-range-input .ui-symbol.icon, .l-time-controller .l-time-range-inputs-holder .l-time-range-input .l-datetime-picker .l-month-year-pager .icon.pager, .l-datetime-picker .l-month-year-pager .l-time-controller .l-time-range-inputs-holder .l-time-range-input .icon.pager, - .l-time-controller .l-time-range-inputs-holder .l-time-range-inputs-elem .ui-symbol.icon, - .l-time-controller .l-time-range-inputs-holder .l-time-range-inputs-elem .l-datetime-picker .l-month-year-pager .icon.pager, - .l-datetime-picker .l-month-year-pager .l-time-controller .l-time-range-inputs-holder .l-time-range-inputs-elem .icon.pager { - font-size: 11px; - width: 11px; } -/* line 71, ../../../../general/res/sass/controls/_time-controller.scss */ -.l-time-controller .l-time-range-slider-holder { - height: 20px; - bottom: 23px; } - /* line 74, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-slider-holder .range-holder { - -moz-box-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; - background: none; - border: none; } - /* line 79, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-slider-holder .range-holder .range .toi-line { - -moz-transform: translateX(50%); - -ms-transform: translateX(50%); - -webkit-transform: translateX(50%); - transform: translateX(50%); - position: absolute; - top: 0; - right: 0; - bottom: 0px; - left: auto; - width: 8px; - height: auto; - z-index: 2; } - /* line 89, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-slider-holder .range-holder .range .toi-line:before, .l-time-controller .l-time-range-slider-holder .range-holder .range .toi-line:after { - background-color: #00c2ff; - content: ""; - position: absolute; } - /* line 95, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-slider-holder .range-holder .range .toi-line:before { - top: 0; - right: auto; - bottom: -10px; - left: 3px; - width: 2px; } - /* line 101, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-slider-holder .range-holder .range .toi-line:after { - -moz-border-radius: 8px; - -webkit-border-radius: 8px; - border-radius: 8px; - -moz-transform: translateY(-50%); - -ms-transform: translateY(-50%); - -webkit-transform: translateY(-50%); - transform: translateY(-50%); - top: 50%; - right: 0; - bottom: auto; - left: 0; - width: auto; - height: 8px; } - /* line 3, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-slider-holder .range-holder .range:hover .toi-line:before, .l-time-controller .l-time-range-slider-holder .range-holder .range:hover .toi-line:after { - background-color: #fff; } - /* line 117, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-slider-holder:not(:active) .knob, - .l-time-controller .l-time-range-slider-holder:not(:active) .range { - -moz-transition-property: left, right; - -o-transition-property: left, right; - -webkit-transition-property: left, right; - transition-property: left, right; - -moz-transition-duration: 500ms; - -o-transition-duration: 500ms; - -webkit-transition-duration: 500ms; - transition-duration: 500ms; - -moz-transition-timing-function: ease-in-out; - -o-transition-timing-function: ease-in-out; - -webkit-transition-timing-function: ease-in-out; - transition-timing-function: ease-in-out; } -/* line 126, ../../../../general/res/sass/controls/_time-controller.scss */ -.l-time-controller .l-time-range-ticks-holder { - height: 20px; } - /* line 128, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-ticks-holder .l-time-range-ticks { - border-top: 1px solid rgba(255, 255, 255, 0.2); } - /* line 130, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-ticks-holder .l-time-range-ticks .tick { - background-color: rgba(255, 255, 255, 0.2); - border: none; - height: 5px; - width: 1px; - margin-left: -1px; - position: absolute; } - /* line 137, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-ticks-holder .l-time-range-ticks .tick:first-child { - margin-left: 0; } - /* line 140, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-ticks-holder .l-time-range-ticks .tick .l-time-range-tick-label { - transform: translateX(-50%); - -webkit-transform: translateX(-50%); - color: #666666; - display: inline-block; - font-size: 0.7em; - position: absolute; - top: 8px; - white-space: nowrap; - z-index: 2; } -/* line 154, ../../../../general/res/sass/controls/_time-controller.scss */ -.l-time-controller .knob { - z-index: 2; } - /* line 156, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .knob .range-value { - -moz-transition-property: visibility, opacity, background-color, border-color; - -o-transition-property: visibility, opacity, background-color, border-color; - -webkit-transition-property: visibility, opacity, background-color, border-color; - transition-property: visibility, opacity, background-color, border-color; - -moz-transition-duration: 0.25s; - -o-transition-duration: 0.25s; - -webkit-transition-duration: 0.25s; - transition-duration: 0.25s; - -moz-transition-timing-function: ease-in-out; - -o-transition-timing-function: ease-in-out; - -webkit-transition-timing-function: ease-in-out; - transition-timing-function: ease-in-out; - padding: 0 10px; + display: block; + top: auto; + height: 83px; + min-width: 500px; + font-size: 0.8rem; } + /* line 38, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-inputs-holder, + mct-include.l-time-controller .l-time-range-slider-holder, + mct-include.l-time-controller .l-time-range-ticks-holder { + overflow: visible; position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + width: auto; + height: auto; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; + top: auto; } + /* line 47, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-slider, + mct-include.l-time-controller .l-time-range-ticks { + overflow: visible; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + width: auto; + height: auto; + left: 150px; + right: 150px; } + /* line 54, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-inputs-holder { + height: 33px; + bottom: 46px; + padding-top: 5px; + border-top: 1px solid rgba(153, 153, 153, 0.1); } + /* line 59, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-inputs-holder .type-icon { + font-size: 120%; + vertical-align: middle; } + /* line 63, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-inputs-holder .l-time-range-input, + mct-include.l-time-controller .l-time-range-inputs-holder .l-time-range-inputs-elem { + margin-right: 5px; } + /* line 66, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-inputs-holder .l-time-range-input .lbl, + mct-include.l-time-controller .l-time-range-inputs-holder .l-time-range-inputs-elem .lbl { + color: #666666; } + /* line 69, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-inputs-holder .l-time-range-input .ui-symbol.icon, mct-include.l-time-controller .l-time-range-inputs-holder .l-time-range-input .l-datetime-picker .l-month-year-pager .icon.pager, .l-datetime-picker .l-month-year-pager mct-include.l-time-controller .l-time-range-inputs-holder .l-time-range-input .icon.pager, + mct-include.l-time-controller .l-time-range-inputs-holder .l-time-range-inputs-elem .ui-symbol.icon, + mct-include.l-time-controller .l-time-range-inputs-holder .l-time-range-inputs-elem .l-datetime-picker .l-month-year-pager .icon.pager, + .l-datetime-picker .l-month-year-pager mct-include.l-time-controller .l-time-range-inputs-holder .l-time-range-inputs-elem .icon.pager { + font-size: 11px; + width: 11px; } + /* line 76, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-slider-holder { height: 20px; - line-height: 20px; - white-space: nowrap; } - /* line 165, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .knob:hover .range-value { - color: #0099cc; } - /* line 168, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .knob.knob-l { - margin-left: -10px; } - /* line 171, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .knob.knob-l .range-value { - text-align: right; - right: 10px; } - /* line 176, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .knob.knob-r { - margin-right: -10px; } - /* line 179, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .knob.knob-r .range-value { - left: 10px; } - /* line 3, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .knob.knob-r:hover + .range-holder .range .toi-line:before, .l-time-controller .knob.knob-r:hover + .range-holder .range .toi-line:after { - background-color: #fff; } + bottom: 23px; } + /* line 79, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-slider-holder .range-holder { + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; + background: none; + border: none; } + /* line 84, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-slider-holder .range-holder .range .toi-line { + -moz-transform: translateX(50%); + -ms-transform: translateX(50%); + -webkit-transform: translateX(50%); + transform: translateX(50%); + position: absolute; + top: 0; + right: 0; + bottom: 0px; + left: auto; + width: 8px; + height: auto; + z-index: 2; } + /* line 94, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-slider-holder .range-holder .range .toi-line:before, mct-include.l-time-controller .l-time-range-slider-holder .range-holder .range .toi-line:after { + background-color: #00c2ff; + content: ""; + position: absolute; } + /* line 100, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-slider-holder .range-holder .range .toi-line:before { + top: 0; + right: auto; + bottom: -10px; + left: 3px; + width: 2px; } + /* line 106, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-slider-holder .range-holder .range .toi-line:after { + -moz-border-radius: 8px; + -webkit-border-radius: 8px; + border-radius: 8px; + -moz-transform: translateY(-50%); + -ms-transform: translateY(-50%); + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + top: 50%; + right: 0; + bottom: auto; + left: 0; + width: auto; + height: 8px; } + /* line 3, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-slider-holder .range-holder .range:hover .toi-line:before, mct-include.l-time-controller .l-time-range-slider-holder .range-holder .range:hover .toi-line:after { + background-color: #fff; } + /* line 122, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-slider-holder:not(:active) .knob, + mct-include.l-time-controller .l-time-range-slider-holder:not(:active) .range { + -moz-transition-property: left, right; + -o-transition-property: left, right; + -webkit-transition-property: left, right; + transition-property: left, right; + -moz-transition-duration: 500ms; + -o-transition-duration: 500ms; + -webkit-transition-duration: 500ms; + transition-duration: 500ms; + -moz-transition-timing-function: ease-in-out; + -o-transition-timing-function: ease-in-out; + -webkit-transition-timing-function: ease-in-out; + transition-timing-function: ease-in-out; } + /* line 131, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-ticks-holder { + height: 20px; } + /* line 133, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-ticks-holder .l-time-range-ticks { + border-top: 1px solid rgba(255, 255, 255, 0.2); } + /* line 135, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-ticks-holder .l-time-range-ticks .tick { + background-color: rgba(255, 255, 255, 0.2); + border: none; + height: 5px; + width: 1px; + margin-left: -1px; + position: absolute; } + /* line 142, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-ticks-holder .l-time-range-ticks .tick:first-child { + margin-left: 0; } + /* line 145, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-ticks-holder .l-time-range-ticks .tick .l-time-range-tick-label { + transform: translateX(-50%); + -webkit-transform: translateX(-50%); + color: #666666; + display: inline-block; + font-size: 0.9em; + position: absolute; + top: 8px; + white-space: nowrap; + z-index: 2; } + /* line 159, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .knob { + z-index: 2; } + /* line 161, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .knob .range-value { + -moz-transition-property: visibility, opacity, background-color, border-color; + -o-transition-property: visibility, opacity, background-color, border-color; + -webkit-transition-property: visibility, opacity, background-color, border-color; + transition-property: visibility, opacity, background-color, border-color; + -moz-transition-duration: 0.25s; + -o-transition-duration: 0.25s; + -webkit-transition-duration: 0.25s; + transition-duration: 0.25s; + -moz-transition-timing-function: ease-in-out; + -o-transition-timing-function: ease-in-out; + -webkit-transition-timing-function: ease-in-out; + transition-timing-function: ease-in-out; + padding: 0 10px; + position: absolute; + height: 20px; + line-height: 20px; + white-space: nowrap; } + /* line 170, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .knob:hover .range-value { + color: #0099cc; } + /* line 173, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .knob.knob-l { + margin-left: -10px; } + /* line 176, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .knob.knob-l .range-value { + text-align: right; + right: 10px; } + /* line 181, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .knob.knob-r { + margin-right: -10px; } + /* line 184, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .knob.knob-r .range-value { + left: 10px; } + /* line 3, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .knob.knob-r:hover + .range-holder .range .toi-line:before, mct-include.l-time-controller .knob.knob-r:hover + .range-holder .range .toi-line:after { + background-color: #fff; } -/* line 193, ../../../../general/res/sass/controls/_time-controller.scss */ +/* line 198, ../../../../general/res/sass/controls/_time-controller.scss */ .s-time-range-val { -moz-border-radius: 3px; -webkit-border-radius: 3px; @@ -3512,11 +3521,11 @@ span.req { left: 0; width: auto; height: auto; } - /* line 297, ../../../../general/res/sass/user-environ/_layout.scss */ - .object-holder.l-controls-visible.l-time-controller-visible > ng-include { + /* line 296, ../../../../general/res/sass/user-environ/_layout.scss */ + .object-holder.l-controls-visible.l-time-controller-visible { bottom: 88px; } -/* line 304, ../../../../general/res/sass/user-environ/_layout.scss */ +/* line 305, ../../../../general/res/sass/user-environ/_layout.scss */ .object-browse-bar .s-btn, .object-browse-bar .s-menu-btn, .top-bar .buttons-main .s-btn, .top-bar .buttons-main .s-menu-btn, @@ -3528,12 +3537,12 @@ span.req { line-height: 25px; vertical-align: top; } -/* line 317, ../../../../general/res/sass/user-environ/_layout.scss */ +/* line 318, ../../../../general/res/sass/user-environ/_layout.scss */ .object-browse-bar .view-switcher, .top-bar .view-switcher { margin-right: 20px; } -/* line 322, ../../../../general/res/sass/user-environ/_layout.scss */ +/* line 323, ../../../../general/res/sass/user-environ/_layout.scss */ .object-browse-bar { overflow: visible; position: absolute; @@ -3549,22 +3558,22 @@ span.req { height: 24px; line-height: 24px; white-space: nowrap; } - /* line 330, ../../../../general/res/sass/user-environ/_layout.scss */ + /* line 331, ../../../../general/res/sass/user-environ/_layout.scss */ .object-browse-bar .left { padding-right: 20px; } - /* line 332, ../../../../general/res/sass/user-environ/_layout.scss */ + /* line 333, ../../../../general/res/sass/user-environ/_layout.scss */ .object-browse-bar .left .l-back { display: inline-block; float: left; margin-right: 10px; } -/* line 340, ../../../../general/res/sass/user-environ/_layout.scss */ +/* line 341, ../../../../general/res/sass/user-environ/_layout.scss */ .l-flex { display: flex; display: -webkit-flex; flex-flow: row nowrap; -webkit-flex-flow: row nowrap; } - /* line 343, ../../../../general/res/sass/user-environ/_layout.scss */ + /* line 344, ../../../../general/res/sass/user-environ/_layout.scss */ .l-flex .left { flex: 1 1 0; -webkit-flex: 1 1 0; diff --git a/platform/commonUI/themes/snow/res/css/theme-snow.css b/platform/commonUI/themes/snow/res/css/theme-snow.css index 2650b2b90b..a7210d67be 100644 --- a/platform/commonUI/themes/snow/res/css/theme-snow.css +++ b/platform/commonUI/themes/snow/res/css/theme-snow.css @@ -20,7 +20,7 @@ * this source code distribution or the Licensing information page available * at runtime from the About dialog for additional information. *****************************************************************************/ -/* line 5, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 5, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, @@ -41,38 +41,38 @@ time, mark, audio, video { font-size: 100%; vertical-align: baseline; } -/* line 22, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 22, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ html { line-height: 1; } -/* line 24, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 24, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ ol, ul { list-style: none; } -/* line 26, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 26, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ table { border-collapse: collapse; border-spacing: 0; } -/* line 28, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 28, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ caption, th, td { text-align: left; font-weight: normal; vertical-align: middle; } -/* line 30, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 30, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ q, blockquote { quotes: none; } - /* line 103, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ + /* line 103, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ q:before, q:after, blockquote:before, blockquote:after { content: ""; content: none; } -/* line 32, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 32, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ a img { border: none; } -/* line 116, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 116, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; } @@ -1908,7 +1908,6 @@ label.checkbox.custom { width: 230px; } /* line 356, ../../../../general/res/sass/controls/_controls.scss */ .l-datetime-picker .l-month-year-pager { - font-size: 0.8rem; height: 15px; margin-bottom: 5px; position: relative; } @@ -2342,206 +2341,216 @@ label.checkbox.custom { right: 0; width: auto; } -/* line 27, ../../../../general/res/sass/controls/_time-controller.scss */ -.l-time-controller .l-time-range-inputs-holder, -.l-time-controller .l-time-range-slider { - font-size: 0.8em; } -/* line 32, ../../../../general/res/sass/controls/_time-controller.scss */ -.l-time-controller .l-time-range-inputs-holder, -.l-time-controller .l-time-range-slider-holder, -.l-time-controller .l-time-range-ticks-holder { - overflow: visible; +/* line 13, ../../../../general/res/sass/controls/_time-controller.scss */ +mct-include.l-time-controller { + overflow: hidden; position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; width: auto; height: auto; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; - min-width: 400px; - top: auto; } -/* line 42, ../../../../general/res/sass/controls/_time-controller.scss */ -.l-time-controller .l-time-range-slider, -.l-time-controller .l-time-range-ticks { - overflow: visible; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - width: auto; - height: auto; - left: 150px; - right: 150px; } -/* line 49, ../../../../general/res/sass/controls/_time-controller.scss */ -.l-time-controller .l-time-range-inputs-holder { - height: 33px; - bottom: 46px; - padding-top: 5px; - border-top: 1px solid rgba(102, 102, 102, 0.2); } - /* line 54, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-inputs-holder .type-icon { - font-size: 120%; - vertical-align: middle; } - /* line 58, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-inputs-holder .l-time-range-input, - .l-time-controller .l-time-range-inputs-holder .l-time-range-inputs-elem { - margin-right: 5px; } - /* line 61, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-inputs-holder .l-time-range-input .lbl, - .l-time-controller .l-time-range-inputs-holder .l-time-range-inputs-elem .lbl { - color: #999999; } - /* line 64, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-inputs-holder .l-time-range-input .ui-symbol.icon, .l-time-controller .l-time-range-inputs-holder .l-time-range-input .l-datetime-picker .l-month-year-pager .icon.pager, .l-datetime-picker .l-month-year-pager .l-time-controller .l-time-range-inputs-holder .l-time-range-input .icon.pager, - .l-time-controller .l-time-range-inputs-holder .l-time-range-inputs-elem .ui-symbol.icon, - .l-time-controller .l-time-range-inputs-holder .l-time-range-inputs-elem .l-datetime-picker .l-month-year-pager .icon.pager, - .l-datetime-picker .l-month-year-pager .l-time-controller .l-time-range-inputs-holder .l-time-range-inputs-elem .icon.pager { - font-size: 11px; - width: 11px; } -/* line 71, ../../../../general/res/sass/controls/_time-controller.scss */ -.l-time-controller .l-time-range-slider-holder { - height: 20px; - bottom: 23px; } - /* line 74, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-slider-holder .range-holder { - -moz-box-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; - background: none; - border: none; } - /* line 79, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-slider-holder .range-holder .range .toi-line { - -moz-transform: translateX(50%); - -ms-transform: translateX(50%); - -webkit-transform: translateX(50%); - transform: translateX(50%); - position: absolute; - top: 0; - right: 0; - bottom: 0px; - left: auto; - width: 8px; - height: auto; - z-index: 2; } - /* line 89, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-slider-holder .range-holder .range .toi-line:before, .l-time-controller .l-time-range-slider-holder .range-holder .range .toi-line:after { - background-color: #666; - content: ""; - position: absolute; } - /* line 95, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-slider-holder .range-holder .range .toi-line:before { - top: 0; - right: auto; - bottom: -10px; - left: 3px; - width: 2px; } - /* line 101, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-slider-holder .range-holder .range .toi-line:after { - -moz-border-radius: 8px; - -webkit-border-radius: 8px; - border-radius: 8px; - -moz-transform: translateY(-50%); - -ms-transform: translateY(-50%); - -webkit-transform: translateY(-50%); - transform: translateY(-50%); - top: 50%; - right: 0; - bottom: auto; - left: 0; - width: auto; - height: 8px; } - /* line 3, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-slider-holder .range-holder .range:hover .toi-line:before, .l-time-controller .l-time-range-slider-holder .range-holder .range:hover .toi-line:after { - background-color: #0052b5; } - /* line 117, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-slider-holder:not(:active) .knob, - .l-time-controller .l-time-range-slider-holder:not(:active) .range { - -moz-transition-property: left, right; - -o-transition-property: left, right; - -webkit-transition-property: left, right; - transition-property: left, right; - -moz-transition-duration: 500ms; - -o-transition-duration: 500ms; - -webkit-transition-duration: 500ms; - transition-duration: 500ms; - -moz-transition-timing-function: ease-in-out; - -o-transition-timing-function: ease-in-out; - -webkit-transition-timing-function: ease-in-out; - transition-timing-function: ease-in-out; } -/* line 126, ../../../../general/res/sass/controls/_time-controller.scss */ -.l-time-controller .l-time-range-ticks-holder { - height: 20px; } - /* line 128, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-ticks-holder .l-time-range-ticks { - border-top: 1px solid rgba(0, 0, 0, 0.2); } - /* line 130, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-ticks-holder .l-time-range-ticks .tick { - background-color: rgba(0, 0, 0, 0.2); - border: none; - height: 5px; - width: 1px; - margin-left: -1px; - position: absolute; } - /* line 137, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-ticks-holder .l-time-range-ticks .tick:first-child { - margin-left: 0; } - /* line 140, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .l-time-range-ticks-holder .l-time-range-ticks .tick .l-time-range-tick-label { - transform: translateX(-50%); - -webkit-transform: translateX(-50%); - color: #999999; - display: inline-block; - font-size: 0.7em; - position: absolute; - top: 8px; - white-space: nowrap; - z-index: 2; } -/* line 154, ../../../../general/res/sass/controls/_time-controller.scss */ -.l-time-controller .knob { - z-index: 2; } - /* line 156, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .knob .range-value { - -moz-transition-property: visibility, opacity, background-color, border-color; - -o-transition-property: visibility, opacity, background-color, border-color; - -webkit-transition-property: visibility, opacity, background-color, border-color; - transition-property: visibility, opacity, background-color, border-color; - -moz-transition-duration: 0.25s; - -o-transition-duration: 0.25s; - -webkit-transition-duration: 0.25s; - transition-duration: 0.25s; - -moz-transition-timing-function: ease-in-out; - -o-transition-timing-function: ease-in-out; - -webkit-transition-timing-function: ease-in-out; - transition-timing-function: ease-in-out; - padding: 0 10px; + display: block; + top: auto; + height: 83px; + min-width: 500px; + font-size: 0.8rem; } + /* line 38, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-inputs-holder, + mct-include.l-time-controller .l-time-range-slider-holder, + mct-include.l-time-controller .l-time-range-ticks-holder { + overflow: visible; position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + width: auto; + height: auto; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; + top: auto; } + /* line 47, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-slider, + mct-include.l-time-controller .l-time-range-ticks { + overflow: visible; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + width: auto; + height: auto; + left: 150px; + right: 150px; } + /* line 54, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-inputs-holder { + height: 33px; + bottom: 46px; + padding-top: 5px; + border-top: 1px solid rgba(102, 102, 102, 0.2); } + /* line 59, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-inputs-holder .type-icon { + font-size: 120%; + vertical-align: middle; } + /* line 63, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-inputs-holder .l-time-range-input, + mct-include.l-time-controller .l-time-range-inputs-holder .l-time-range-inputs-elem { + margin-right: 5px; } + /* line 66, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-inputs-holder .l-time-range-input .lbl, + mct-include.l-time-controller .l-time-range-inputs-holder .l-time-range-inputs-elem .lbl { + color: #999999; } + /* line 69, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-inputs-holder .l-time-range-input .ui-symbol.icon, mct-include.l-time-controller .l-time-range-inputs-holder .l-time-range-input .l-datetime-picker .l-month-year-pager .icon.pager, .l-datetime-picker .l-month-year-pager mct-include.l-time-controller .l-time-range-inputs-holder .l-time-range-input .icon.pager, + mct-include.l-time-controller .l-time-range-inputs-holder .l-time-range-inputs-elem .ui-symbol.icon, + mct-include.l-time-controller .l-time-range-inputs-holder .l-time-range-inputs-elem .l-datetime-picker .l-month-year-pager .icon.pager, + .l-datetime-picker .l-month-year-pager mct-include.l-time-controller .l-time-range-inputs-holder .l-time-range-inputs-elem .icon.pager { + font-size: 11px; + width: 11px; } + /* line 76, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-slider-holder { height: 20px; - line-height: 20px; - white-space: nowrap; } - /* line 165, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .knob:hover .range-value { - color: rgba(0, 153, 204, 0.7); } - /* line 168, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .knob.knob-l { - margin-left: -10px; } - /* line 171, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .knob.knob-l .range-value { - text-align: right; - right: 10px; } - /* line 176, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .knob.knob-r { - margin-right: -10px; } - /* line 179, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .knob.knob-r .range-value { - left: 10px; } - /* line 3, ../../../../general/res/sass/controls/_time-controller.scss */ - .l-time-controller .knob.knob-r:hover + .range-holder .range .toi-line:before, .l-time-controller .knob.knob-r:hover + .range-holder .range .toi-line:after { - background-color: #0052b5; } + bottom: 23px; } + /* line 79, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-slider-holder .range-holder { + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; + background: none; + border: none; } + /* line 84, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-slider-holder .range-holder .range .toi-line { + -moz-transform: translateX(50%); + -ms-transform: translateX(50%); + -webkit-transform: translateX(50%); + transform: translateX(50%); + position: absolute; + top: 0; + right: 0; + bottom: 0px; + left: auto; + width: 8px; + height: auto; + z-index: 2; } + /* line 94, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-slider-holder .range-holder .range .toi-line:before, mct-include.l-time-controller .l-time-range-slider-holder .range-holder .range .toi-line:after { + background-color: #666; + content: ""; + position: absolute; } + /* line 100, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-slider-holder .range-holder .range .toi-line:before { + top: 0; + right: auto; + bottom: -10px; + left: 3px; + width: 2px; } + /* line 106, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-slider-holder .range-holder .range .toi-line:after { + -moz-border-radius: 8px; + -webkit-border-radius: 8px; + border-radius: 8px; + -moz-transform: translateY(-50%); + -ms-transform: translateY(-50%); + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + top: 50%; + right: 0; + bottom: auto; + left: 0; + width: auto; + height: 8px; } + /* line 3, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-slider-holder .range-holder .range:hover .toi-line:before, mct-include.l-time-controller .l-time-range-slider-holder .range-holder .range:hover .toi-line:after { + background-color: #0052b5; } + /* line 122, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-slider-holder:not(:active) .knob, + mct-include.l-time-controller .l-time-range-slider-holder:not(:active) .range { + -moz-transition-property: left, right; + -o-transition-property: left, right; + -webkit-transition-property: left, right; + transition-property: left, right; + -moz-transition-duration: 500ms; + -o-transition-duration: 500ms; + -webkit-transition-duration: 500ms; + transition-duration: 500ms; + -moz-transition-timing-function: ease-in-out; + -o-transition-timing-function: ease-in-out; + -webkit-transition-timing-function: ease-in-out; + transition-timing-function: ease-in-out; } + /* line 131, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-ticks-holder { + height: 20px; } + /* line 133, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-ticks-holder .l-time-range-ticks { + border-top: 1px solid rgba(0, 0, 0, 0.2); } + /* line 135, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-ticks-holder .l-time-range-ticks .tick { + background-color: rgba(0, 0, 0, 0.2); + border: none; + height: 5px; + width: 1px; + margin-left: -1px; + position: absolute; } + /* line 142, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-ticks-holder .l-time-range-ticks .tick:first-child { + margin-left: 0; } + /* line 145, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .l-time-range-ticks-holder .l-time-range-ticks .tick .l-time-range-tick-label { + transform: translateX(-50%); + -webkit-transform: translateX(-50%); + color: #999999; + display: inline-block; + font-size: 0.9em; + position: absolute; + top: 8px; + white-space: nowrap; + z-index: 2; } + /* line 159, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .knob { + z-index: 2; } + /* line 161, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .knob .range-value { + -moz-transition-property: visibility, opacity, background-color, border-color; + -o-transition-property: visibility, opacity, background-color, border-color; + -webkit-transition-property: visibility, opacity, background-color, border-color; + transition-property: visibility, opacity, background-color, border-color; + -moz-transition-duration: 0.25s; + -o-transition-duration: 0.25s; + -webkit-transition-duration: 0.25s; + transition-duration: 0.25s; + -moz-transition-timing-function: ease-in-out; + -o-transition-timing-function: ease-in-out; + -webkit-transition-timing-function: ease-in-out; + transition-timing-function: ease-in-out; + padding: 0 10px; + position: absolute; + height: 20px; + line-height: 20px; + white-space: nowrap; } + /* line 170, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .knob:hover .range-value { + color: rgba(0, 153, 204, 0.7); } + /* line 173, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .knob.knob-l { + margin-left: -10px; } + /* line 176, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .knob.knob-l .range-value { + text-align: right; + right: 10px; } + /* line 181, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .knob.knob-r { + margin-right: -10px; } + /* line 184, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .knob.knob-r .range-value { + left: 10px; } + /* line 3, ../../../../general/res/sass/controls/_time-controller.scss */ + mct-include.l-time-controller .knob.knob-r:hover + .range-holder .range .toi-line:before, mct-include.l-time-controller .knob.knob-r:hover + .range-holder .range .toi-line:after { + background-color: #0052b5; } -/* line 193, ../../../../general/res/sass/controls/_time-controller.scss */ +/* line 198, ../../../../general/res/sass/controls/_time-controller.scss */ .s-time-range-val { -moz-border-radius: 4px; -webkit-border-radius: 4px; @@ -3459,11 +3468,11 @@ span.req { left: 0; width: auto; height: auto; } - /* line 297, ../../../../general/res/sass/user-environ/_layout.scss */ - .object-holder.l-controls-visible.l-time-controller-visible > ng-include { + /* line 296, ../../../../general/res/sass/user-environ/_layout.scss */ + .object-holder.l-controls-visible.l-time-controller-visible { bottom: 88px; } -/* line 304, ../../../../general/res/sass/user-environ/_layout.scss */ +/* line 305, ../../../../general/res/sass/user-environ/_layout.scss */ .object-browse-bar .s-btn, .object-browse-bar .s-menu-btn, .top-bar .buttons-main .s-btn, .top-bar .buttons-main .s-menu-btn, @@ -3475,12 +3484,12 @@ span.req { line-height: 25px; vertical-align: top; } -/* line 317, ../../../../general/res/sass/user-environ/_layout.scss */ +/* line 318, ../../../../general/res/sass/user-environ/_layout.scss */ .object-browse-bar .view-switcher, .top-bar .view-switcher { margin-right: 20px; } -/* line 322, ../../../../general/res/sass/user-environ/_layout.scss */ +/* line 323, ../../../../general/res/sass/user-environ/_layout.scss */ .object-browse-bar { overflow: visible; position: absolute; @@ -3496,22 +3505,22 @@ span.req { height: 24px; line-height: 24px; white-space: nowrap; } - /* line 330, ../../../../general/res/sass/user-environ/_layout.scss */ + /* line 331, ../../../../general/res/sass/user-environ/_layout.scss */ .object-browse-bar .left { padding-right: 20px; } - /* line 332, ../../../../general/res/sass/user-environ/_layout.scss */ + /* line 333, ../../../../general/res/sass/user-environ/_layout.scss */ .object-browse-bar .left .l-back { display: inline-block; float: left; margin-right: 10px; } -/* line 340, ../../../../general/res/sass/user-environ/_layout.scss */ +/* line 341, ../../../../general/res/sass/user-environ/_layout.scss */ .l-flex { display: flex; display: -webkit-flex; flex-flow: row nowrap; -webkit-flex-flow: row nowrap; } - /* line 343, ../../../../general/res/sass/user-environ/_layout.scss */ + /* line 344, ../../../../general/res/sass/user-environ/_layout.scss */ .l-flex .left { flex: 1 1 0; -webkit-flex: 1 1 0; diff --git a/platform/features/conductor/src/ConductorRepresenter.js b/platform/features/conductor/src/ConductorRepresenter.js index c6d18c9266..0d9314ed2d 100644 --- a/platform/features/conductor/src/ConductorRepresenter.js +++ b/platform/features/conductor/src/ConductorRepresenter.js @@ -26,9 +26,8 @@ define( function () { "use strict"; - var CONDUCTOR_HEIGHT = "100px", - TEMPLATE = [ - "", + var TEMPLATE = [ + "", "" ].join(''), THROTTLE_MS = 200, From d7bd793bf3779cd3fa1f0cbc815b8691a781a397 Mon Sep 17 00:00:00 2001 From: Charles Hacskaylo Date: Thu, 15 Oct 2015 16:23:42 -0700 Subject: [PATCH 25/26] [Frontend] New .loading class open #190 CSS for revised .loading class; Commented out/removed old .loading styles; Theme constants for loading colors added to theme files; --- .../commonUI/general/res/sass/_mixins.scss | 14 - .../res/sass/helpers/_wait-spinner.scss | 73 +++++- .../general/res/sass/search/_search.scss | 5 +- .../commonUI/general/res/sass/tree/_tree.scss | 2 + .../espresso/res/css/theme-espresso.css | 247 ++++++++++++------ .../themes/espresso/res/sass/_constants.scss | 6 +- .../themes/snow/res/css/theme-snow.css | 247 ++++++++++++------ .../themes/snow/res/sass/_constants.scss | 8 +- 8 files changed, 397 insertions(+), 205 deletions(-) diff --git a/platform/commonUI/general/res/sass/_mixins.scss b/platform/commonUI/general/res/sass/_mixins.scss index 070bf29e73..c3d2ecc781 100644 --- a/platform/commonUI/general/res/sass/_mixins.scss +++ b/platform/commonUI/general/res/sass/_mixins.scss @@ -375,20 +375,6 @@ overflow-y: $showBar; } -@mixin wait-spinner($b: 5px, $c: $colorAlt1) { - display: block; - position: absolute; - -webkit-animation: rotation .6s infinite linear; - -moz-animation: rotation .6s infinite linear; - -o-animation: rotation .6s infinite linear; - animation: rotation .6s infinite linear; - border-color: rgba($c, 0.25); - border-top-color: rgba($c, 1.0); - border-style: solid; - border-width: $b; - border-radius: 100%; -} - @mixin test($c: #ffcc00, $a: 0.2) { background-color: rgba($c, $a) !important; } diff --git a/platform/commonUI/general/res/sass/helpers/_wait-spinner.scss b/platform/commonUI/general/res/sass/helpers/_wait-spinner.scss index f80c1f1971..86c23a266a 100644 --- a/platform/commonUI/general/res/sass/helpers/_wait-spinner.scss +++ b/platform/commonUI/general/res/sass/helpers/_wait-spinner.scss @@ -19,24 +19,45 @@ * this source code distribution or the Licensing information page available * at runtime from the About dialog for additional information. *****************************************************************************/ -@-webkit-keyframes rotation { - from {-webkit-transform: rotate(0deg);} - to {-webkit-transform: rotate(359deg);} +@include keyframes(rotation) { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(359deg); } } -@-moz-keyframes rotation { - from {-moz-transform: rotate(0deg);} - to {-moz-transform: rotate(359deg);} +@mixin wait-spinner2($b: 5px, $c: $colorAlt1) { + @include keyframes(rotateCentered) { + 0% { transform: translateX(-50%) translateY(-50%) rotate(0deg); } + 100% { transform: translateX(-50%) translateY(-50%) rotate(359deg); } + } + @include animation-name(rotateCentered); + @include animation-duration(0.5s); + @include animation-iteration-count(infinite); + @include animation-timing-function(linear); + border-color: rgba($c, 0.25); + border-top-color: rgba($c, 1.0); + border-style: solid; + border-width: 5px; + @include border-radius(100%); + @include box-sizing(border-box); + display: block; + position: absolute; + height: 0; width: 0; + padding: 7%; + left: 50%; top: 50%; } -@-o-keyframes rotation { - from {-o-transform: rotate(0deg);} - to {-o-transform: rotate(359deg);} -} - -@keyframes rotation { - from {transform: rotate(0deg);} - to {transform: rotate(359deg);} +@mixin wait-spinner($b: 5px, $c: $colorAlt1) { + display: block; + position: absolute; + -webkit-animation: rotation .6s infinite linear; + -moz-animation: rotation .6s infinite linear; + -o-animation: rotation .6s infinite linear; + animation: rotation .6s infinite linear; + border-color: rgba($c, 0.25); + border-top-color: rgba($c, 1.0); + border-style: solid; + border-width: $b; + @include border-radius(100%); } .t-wait-spinner, @@ -96,4 +117,28 @@ margin-top: 0 !important; padding: 0 !important; top: 0; left: 0; +} + +.loading { + // Can be applied to any block element with height and width + pointer-events: none; + &:before, + &:after { + content: ''; + } + &:before { + @include wait-spinner2(5px, $colorLoadingFg); + z-index: 10; + } + &:after { + @include absPosDefault(); + background: $colorLoadingBg; + display: block; + z-index: 9; + } + &.tree-item:before { + padding: $menuLineH / 4; + border-width: 2px; + } + } \ No newline at end of file diff --git a/platform/commonUI/general/res/sass/search/_search.scss b/platform/commonUI/general/res/sass/search/_search.scss index 3aa349d6f8..1993e7db78 100644 --- a/platform/commonUI/general/res/sass/search/_search.scss +++ b/platform/commonUI/general/res/sass/search/_search.scss @@ -227,7 +227,8 @@ .load-icon { position: relative; - &.loading { + +/* &.loading { pointer-events: none; margin-left: $leftMargin; @@ -248,7 +249,7 @@ &:not(.loading) { cursor: pointer; - } + }*/ } .load-more-button { diff --git a/platform/commonUI/general/res/sass/tree/_tree.scss b/platform/commonUI/general/res/sass/tree/_tree.scss index 2c0343a6c4..c3a820518b 100644 --- a/platform/commonUI/general/res/sass/tree/_tree.scss +++ b/platform/commonUI/general/res/sass/tree/_tree.scss @@ -112,6 +112,7 @@ ul.tree { } } + /* &.loading { pointer-events: none; .label { @@ -124,6 +125,7 @@ ul.tree { margin-left: 14px; } } + */ &.selected { background: $colorItemTreeSelectedBg; diff --git a/platform/commonUI/themes/espresso/res/css/theme-espresso.css b/platform/commonUI/themes/espresso/res/css/theme-espresso.css index d644a226ad..fe402962fd 100644 --- a/platform/commonUI/themes/espresso/res/css/theme-espresso.css +++ b/platform/commonUI/themes/espresso/res/css/theme-espresso.css @@ -20,7 +20,7 @@ * this source code distribution or the Licensing information page available * at runtime from the About dialog for additional information. *****************************************************************************/ -/* line 5, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 5, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, @@ -41,38 +41,38 @@ time, mark, audio, video { font-size: 100%; vertical-align: baseline; } -/* line 22, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 22, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ html { line-height: 1; } -/* line 24, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 24, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ ol, ul { list-style: none; } -/* line 26, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 26, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ table { border-collapse: collapse; border-spacing: 0; } -/* line 28, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 28, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ caption, th, td { text-align: left; font-weight: normal; vertical-align: middle; } -/* line 30, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 30, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ q, blockquote { quotes: none; } - /* line 103, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ + /* line 103, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ q:before, q:after, blockquote:before, blockquote:after { content: ""; content: none; } -/* line 32, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 32, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ a img { border: none; } -/* line 116, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 116, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; } @@ -1059,27 +1059,22 @@ mct-container { * this source code distribution or the Licensing information page available * at runtime from the About dialog for additional information. *****************************************************************************/ -@-webkit-keyframes rotation { - from { - -webkit-transform: rotate(0deg); } - to { - -webkit-transform: rotate(359deg); } } @-moz-keyframes rotation { - from { - -moz-transform: rotate(0deg); } - to { - -moz-transform: rotate(359deg); } } -@-o-keyframes rotation { - from { - -o-transform: rotate(0deg); } - to { - -o-transform: rotate(359deg); } } -@keyframes rotation { - from { + 0% { transform: rotate(0deg); } - to { + 100% { transform: rotate(359deg); } } -/* line 42, ../../../../general/res/sass/helpers/_wait-spinner.scss */ +@-webkit-keyframes rotation { + 0% { + transform: rotate(0deg); } + 100% { + transform: rotate(359deg); } } +@keyframes rotation { + 0% { + transform: rotate(0deg); } + 100% { + transform: rotate(359deg); } } +/* line 63, ../../../../general/res/sass/helpers/_wait-spinner.scss */ .t-wait-spinner, .wait-spinner { display: block; @@ -1092,6 +1087,8 @@ mct-container { border-top-color: #0099cc; border-style: solid; border-width: 0.5em; + -moz-border-radius: 100%; + -webkit-border-radius: 100%; border-radius: 100%; top: 50%; left: 50%; @@ -1102,7 +1099,7 @@ mct-container { margin-top: -5%; margin-left: -5%; z-index: 2; } - /* line 53, ../../../../general/res/sass/helpers/_wait-spinner.scss */ + /* line 74, ../../../../general/res/sass/helpers/_wait-spinner.scss */ .t-wait-spinner.inline, .wait-spinner.inline { display: inline-block !important; @@ -1110,26 +1107,26 @@ mct-container { position: relative !important; vertical-align: middle; } -/* line 61, ../../../../general/res/sass/helpers/_wait-spinner.scss */ +/* line 82, ../../../../general/res/sass/helpers/_wait-spinner.scss */ .l-wait-spinner-holder { pointer-events: none; position: absolute; } - /* line 65, ../../../../general/res/sass/helpers/_wait-spinner.scss */ + /* line 86, ../../../../general/res/sass/helpers/_wait-spinner.scss */ .l-wait-spinner-holder.align-left .t-wait-spinner { left: 0; margin-left: 0; } - /* line 70, ../../../../general/res/sass/helpers/_wait-spinner.scss */ + /* line 91, ../../../../general/res/sass/helpers/_wait-spinner.scss */ .l-wait-spinner-holder.full-size { display: inline-block; height: 100%; width: 100%; } - /* line 73, ../../../../general/res/sass/helpers/_wait-spinner.scss */ + /* line 94, ../../../../general/res/sass/helpers/_wait-spinner.scss */ .l-wait-spinner-holder.full-size .t-wait-spinner { top: 0; margin-top: 0; padding: 30%; } -/* line 82, ../../../../general/res/sass/helpers/_wait-spinner.scss */ +/* line 103, ../../../../general/res/sass/helpers/_wait-spinner.scss */ .treeview .wait-spinner { display: block; position: absolute; @@ -1141,6 +1138,8 @@ mct-container { border-top-color: #0099cc; border-style: solid; border-width: 0.25em; + -moz-border-radius: 100%; + -webkit-border-radius: 100%; border-radius: 100%; height: 10px; width: 10px; @@ -1149,7 +1148,7 @@ mct-container { top: 2px; left: 0; } -/* line 91, ../../../../general/res/sass/helpers/_wait-spinner.scss */ +/* line 112, ../../../../general/res/sass/helpers/_wait-spinner.scss */ .wait-spinner.sm { display: block; position: absolute; @@ -1161,6 +1160,8 @@ mct-container { border-top-color: #0099cc; border-style: solid; border-width: 0.25em; + -moz-border-radius: 100%; + -webkit-border-radius: 100%; border-radius: 100%; height: 13px; width: 13px; @@ -1170,6 +1171,77 @@ mct-container { top: 0; left: 0; } +/* line 122, ../../../../general/res/sass/helpers/_wait-spinner.scss */ +.loading { + pointer-events: none; } + /* line 125, ../../../../general/res/sass/helpers/_wait-spinner.scss */ + .loading:before, .loading:after { + content: ''; } + /* line 129, ../../../../general/res/sass/helpers/_wait-spinner.scss */ + .loading:before { + -moz-animation-name: rotateCentered; + -webkit-animation-name: rotateCentered; + animation-name: rotateCentered; + -moz-animation-duration: 0.5s; + -webkit-animation-duration: 0.5s; + animation-duration: 0.5s; + -moz-animation-iteration-count: infinite; + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite; + -moz-animation-timing-function: linear; + -webkit-animation-timing-function: linear; + animation-timing-function: linear; + border-color: rgba(255, 199, 0, 0.25); + border-top-color: #ffc700; + border-style: solid; + border-width: 5px; + -moz-border-radius: 100%; + -webkit-border-radius: 100%; + border-radius: 100%; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; + display: block; + position: absolute; + height: 0; + width: 0; + padding: 7%; + left: 50%; + top: 50%; + z-index: 10; } +@-moz-keyframes rotateCentered { + 0% { + transform: translateX(-50%) translateY(-50%) rotate(0deg); } + 100% { + transform: translateX(-50%) translateY(-50%) rotate(359deg); } } +@-webkit-keyframes rotateCentered { + 0% { + transform: translateX(-50%) translateY(-50%) rotate(0deg); } + 100% { + transform: translateX(-50%) translateY(-50%) rotate(359deg); } } +@keyframes rotateCentered { + 0% { + transform: translateX(-50%) translateY(-50%) rotate(0deg); } + 100% { + transform: translateX(-50%) translateY(-50%) rotate(359deg); } } + /* line 133, ../../../../general/res/sass/helpers/_wait-spinner.scss */ + .loading:after { + overflow: hidden; + position: absolute; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; + width: auto; + height: auto; + background: rgba(153, 153, 153, 0.2); + display: block; + z-index: 9; } + /* line 139, ../../../../general/res/sass/helpers/_wait-spinner.scss */ + .loading.tree-item:before { + padding: 0.375rem; + border-width: 2px; } + /* Styles for messages */ /* line 4, ../../../../general/res/sass/_messages.scss */ .message.block { @@ -3525,7 +3597,7 @@ span.req { .object-holder.l-controls-visible.l-time-controller-visible { bottom: 88px; } -/* line 305, ../../../../general/res/sass/user-environ/_layout.scss */ +/* line 302, ../../../../general/res/sass/user-environ/_layout.scss */ .object-browse-bar .s-btn, .object-browse-bar .s-menu-btn, .top-bar .buttons-main .s-btn, .top-bar .buttons-main .s-menu-btn, @@ -3537,12 +3609,12 @@ span.req { line-height: 25px; vertical-align: top; } -/* line 318, ../../../../general/res/sass/user-environ/_layout.scss */ +/* line 315, ../../../../general/res/sass/user-environ/_layout.scss */ .object-browse-bar .view-switcher, .top-bar .view-switcher { margin-right: 20px; } -/* line 323, ../../../../general/res/sass/user-environ/_layout.scss */ +/* line 320, ../../../../general/res/sass/user-environ/_layout.scss */ .object-browse-bar { overflow: visible; position: absolute; @@ -3558,22 +3630,22 @@ span.req { height: 24px; line-height: 24px; white-space: nowrap; } - /* line 331, ../../../../general/res/sass/user-environ/_layout.scss */ + /* line 328, ../../../../general/res/sass/user-environ/_layout.scss */ .object-browse-bar .left { padding-right: 20px; } - /* line 333, ../../../../general/res/sass/user-environ/_layout.scss */ + /* line 330, ../../../../general/res/sass/user-environ/_layout.scss */ .object-browse-bar .left .l-back { display: inline-block; float: left; margin-right: 10px; } -/* line 341, ../../../../general/res/sass/user-environ/_layout.scss */ +/* line 338, ../../../../general/res/sass/user-environ/_layout.scss */ .l-flex { display: flex; display: -webkit-flex; flex-flow: row nowrap; -webkit-flex-flow: row nowrap; } - /* line 344, ../../../../general/res/sass/user-environ/_layout.scss */ + /* line 341, ../../../../general/res/sass/user-environ/_layout.scss */ .l-flex .left { flex: 1 1 0; -webkit-flex: 1 1 0; @@ -4072,25 +4144,30 @@ span.req { position: relative; } /* line 228, ../../../../general/res/sass/search/_search.scss */ .search .search-scroll .load-icon { - position: relative; } - /* line 230, ../../../../general/res/sass/search/_search.scss */ - .search .search-scroll .load-icon.loading { - pointer-events: none; - margin-left: 6px; } - /* line 234, ../../../../general/res/sass/search/_search.scss */ - .search .search-scroll .load-icon.loading .title-label { - font-style: italic; - font-size: .9em; - opacity: 0.5; - margin-left: 26px; - line-height: 24px; } - /* line 244, ../../../../general/res/sass/search/_search.scss */ - .search .search-scroll .load-icon.loading .wait-spinner { - margin-left: 6px; } - /* line 249, ../../../../general/res/sass/search/_search.scss */ - .search .search-scroll .load-icon:not(.loading) { - cursor: pointer; } - /* line 254, ../../../../general/res/sass/search/_search.scss */ + position: relative; + /* &.loading { + pointer-events: none; + margin-left: $leftMargin; + + .title-label { + // Text styling + font-style: italic; + font-size: .9em; + opacity: 0.5; + + // Text positioning + margin-left: $iconWidth + $leftMargin; + line-height: 24px; + } + .wait-spinner { + margin-left: $leftMargin; + } + } + + &:not(.loading) { + cursor: pointer; + }*/ } + /* line 255, ../../../../general/res/sass/search/_search.scss */ .search .search-scroll .load-more-button { margin-top: 5px 0; font-size: 0.8em; @@ -4361,7 +4438,21 @@ ul.tree { height: 1.5rem; line-height: 1.5rem; margin-bottom: 3px; - position: relative; } + position: relative; + /* + &.loading { + pointer-events: none; + .label { + opacity: 0.5; + .title-label { + font-style: italic; + } + } + .wait-spinner { + margin-left: 14px; + } + } + */ } /* line 48, ../../../../general/res/sass/tree/_tree.scss */ .tree-item .view-control, .search-result-item .view-control { @@ -4444,63 +4535,47 @@ ul.tree { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } - /* line 115, ../../../../general/res/sass/tree/_tree.scss */ - .tree-item.loading, - .search-result-item.loading { - pointer-events: none; } - /* line 117, ../../../../general/res/sass/tree/_tree.scss */ - .tree-item.loading .label, - .search-result-item.loading .label { - opacity: 0.5; } - /* line 119, ../../../../general/res/sass/tree/_tree.scss */ - .tree-item.loading .label .title-label, - .search-result-item.loading .label .title-label { - font-style: italic; } - /* line 123, ../../../../general/res/sass/tree/_tree.scss */ - .tree-item.loading .wait-spinner, - .search-result-item.loading .wait-spinner { - margin-left: 14px; } - /* line 128, ../../../../general/res/sass/tree/_tree.scss */ + /* line 130, ../../../../general/res/sass/tree/_tree.scss */ .tree-item.selected, .search-result-item.selected { background: #006080; color: #cccccc; } - /* line 131, ../../../../general/res/sass/tree/_tree.scss */ + /* line 133, ../../../../general/res/sass/tree/_tree.scss */ .tree-item.selected .view-control, .search-result-item.selected .view-control { color: rgba(255, 255, 255, 0.3); } - /* line 134, ../../../../general/res/sass/tree/_tree.scss */ + /* line 136, ../../../../general/res/sass/tree/_tree.scss */ .tree-item.selected .label .type-icon, .search-result-item.selected .label .type-icon { color: #cccccc; } @media screen and (min-device-width: 800px) and (min-device-height: 1025px), screen and (min-device-width: 1025px) and (min-device-height: 800px) { - /* line 142, ../../../../general/res/sass/tree/_tree.scss */ + /* line 144, ../../../../general/res/sass/tree/_tree.scss */ .tree-item:not(.selected):hover, .search-result-item:not(.selected):hover { background: rgba(153, 153, 153, 0.1); color: #cccccc; } - /* line 148, ../../../../general/res/sass/tree/_tree.scss */ + /* line 150, ../../../../general/res/sass/tree/_tree.scss */ .tree-item:not(.selected):hover .icon, .search-result-item:not(.selected):hover .icon { color: #33ccff; } } - /* line 155, ../../../../general/res/sass/tree/_tree.scss */ + /* line 157, ../../../../general/res/sass/tree/_tree.scss */ .tree-item:not(.loading), .search-result-item:not(.loading) { cursor: pointer; } - /* line 159, ../../../../general/res/sass/tree/_tree.scss */ + /* line 161, ../../../../general/res/sass/tree/_tree.scss */ .tree-item .context-trigger, .search-result-item .context-trigger { top: -1px; position: absolute; right: 3px; } - /* line 165, ../../../../general/res/sass/tree/_tree.scss */ + /* line 167, ../../../../general/res/sass/tree/_tree.scss */ .tree-item .context-trigger .invoke-menu, .search-result-item .context-trigger .invoke-menu { font-size: 0.75em; height: 0.9rem; line-height: 0.9rem; } -/* line 174, ../../../../general/res/sass/tree/_tree.scss */ +/* line 176, ../../../../general/res/sass/tree/_tree.scss */ .tree-item .label { left: 15px; } diff --git a/platform/commonUI/themes/espresso/res/sass/_constants.scss b/platform/commonUI/themes/espresso/res/sass/_constants.scss index e6106d049c..b1851eae58 100644 --- a/platform/commonUI/themes/espresso/res/sass/_constants.scss +++ b/platform/commonUI/themes/espresso/res/sass/_constants.scss @@ -163,4 +163,8 @@ $colorCalCellSelectedFg: $colorItemTreeSelectedFg; $colorCalCellInMonthBg: pushBack($colorMenuBg, 5%); // About Screen -$colorAboutLink: #84b3ff; \ No newline at end of file +$colorAboutLink: #84b3ff; + +// Loading +$colorLoadingBg: rgba($colorBodyFg, 0.2); +$colorLoadingFg: $colorAlt1; \ No newline at end of file diff --git a/platform/commonUI/themes/snow/res/css/theme-snow.css b/platform/commonUI/themes/snow/res/css/theme-snow.css index a7210d67be..69af739435 100644 --- a/platform/commonUI/themes/snow/res/css/theme-snow.css +++ b/platform/commonUI/themes/snow/res/css/theme-snow.css @@ -20,7 +20,7 @@ * this source code distribution or the Licensing information page available * at runtime from the About dialog for additional information. *****************************************************************************/ -/* line 5, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 5, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, @@ -41,38 +41,38 @@ time, mark, audio, video { font-size: 100%; vertical-align: baseline; } -/* line 22, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 22, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ html { line-height: 1; } -/* line 24, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 24, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ ol, ul { list-style: none; } -/* line 26, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 26, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ table { border-collapse: collapse; border-spacing: 0; } -/* line 28, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 28, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ caption, th, td { text-align: left; font-weight: normal; vertical-align: middle; } -/* line 30, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 30, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ q, blockquote { quotes: none; } - /* line 103, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ + /* line 103, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ q:before, q:after, blockquote:before, blockquote:after { content: ""; content: none; } -/* line 32, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 32, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ a img { border: none; } -/* line 116, ../../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 116, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; } @@ -1056,27 +1056,22 @@ mct-container { * this source code distribution or the Licensing information page available * at runtime from the About dialog for additional information. *****************************************************************************/ -@-webkit-keyframes rotation { - from { - -webkit-transform: rotate(0deg); } - to { - -webkit-transform: rotate(359deg); } } @-moz-keyframes rotation { - from { - -moz-transform: rotate(0deg); } - to { - -moz-transform: rotate(359deg); } } -@-o-keyframes rotation { - from { - -o-transform: rotate(0deg); } - to { - -o-transform: rotate(359deg); } } -@keyframes rotation { - from { + 0% { transform: rotate(0deg); } - to { + 100% { transform: rotate(359deg); } } -/* line 42, ../../../../general/res/sass/helpers/_wait-spinner.scss */ +@-webkit-keyframes rotation { + 0% { + transform: rotate(0deg); } + 100% { + transform: rotate(359deg); } } +@keyframes rotation { + 0% { + transform: rotate(0deg); } + 100% { + transform: rotate(359deg); } } +/* line 63, ../../../../general/res/sass/helpers/_wait-spinner.scss */ .t-wait-spinner, .wait-spinner { display: block; @@ -1089,6 +1084,8 @@ mct-container { border-top-color: #0099cc; border-style: solid; border-width: 0.5em; + -moz-border-radius: 100%; + -webkit-border-radius: 100%; border-radius: 100%; top: 50%; left: 50%; @@ -1099,7 +1096,7 @@ mct-container { margin-top: -5%; margin-left: -5%; z-index: 2; } - /* line 53, ../../../../general/res/sass/helpers/_wait-spinner.scss */ + /* line 74, ../../../../general/res/sass/helpers/_wait-spinner.scss */ .t-wait-spinner.inline, .wait-spinner.inline { display: inline-block !important; @@ -1107,26 +1104,26 @@ mct-container { position: relative !important; vertical-align: middle; } -/* line 61, ../../../../general/res/sass/helpers/_wait-spinner.scss */ +/* line 82, ../../../../general/res/sass/helpers/_wait-spinner.scss */ .l-wait-spinner-holder { pointer-events: none; position: absolute; } - /* line 65, ../../../../general/res/sass/helpers/_wait-spinner.scss */ + /* line 86, ../../../../general/res/sass/helpers/_wait-spinner.scss */ .l-wait-spinner-holder.align-left .t-wait-spinner { left: 0; margin-left: 0; } - /* line 70, ../../../../general/res/sass/helpers/_wait-spinner.scss */ + /* line 91, ../../../../general/res/sass/helpers/_wait-spinner.scss */ .l-wait-spinner-holder.full-size { display: inline-block; height: 100%; width: 100%; } - /* line 73, ../../../../general/res/sass/helpers/_wait-spinner.scss */ + /* line 94, ../../../../general/res/sass/helpers/_wait-spinner.scss */ .l-wait-spinner-holder.full-size .t-wait-spinner { top: 0; margin-top: 0; padding: 30%; } -/* line 82, ../../../../general/res/sass/helpers/_wait-spinner.scss */ +/* line 103, ../../../../general/res/sass/helpers/_wait-spinner.scss */ .treeview .wait-spinner { display: block; position: absolute; @@ -1138,6 +1135,8 @@ mct-container { border-top-color: #0099cc; border-style: solid; border-width: 0.25em; + -moz-border-radius: 100%; + -webkit-border-radius: 100%; border-radius: 100%; height: 10px; width: 10px; @@ -1146,7 +1145,7 @@ mct-container { top: 2px; left: 0; } -/* line 91, ../../../../general/res/sass/helpers/_wait-spinner.scss */ +/* line 112, ../../../../general/res/sass/helpers/_wait-spinner.scss */ .wait-spinner.sm { display: block; position: absolute; @@ -1158,6 +1157,8 @@ mct-container { border-top-color: #0099cc; border-style: solid; border-width: 0.25em; + -moz-border-radius: 100%; + -webkit-border-radius: 100%; border-radius: 100%; height: 13px; width: 13px; @@ -1167,6 +1168,77 @@ mct-container { top: 0; left: 0; } +/* line 122, ../../../../general/res/sass/helpers/_wait-spinner.scss */ +.loading { + pointer-events: none; } + /* line 125, ../../../../general/res/sass/helpers/_wait-spinner.scss */ + .loading:before, .loading:after { + content: ''; } + /* line 129, ../../../../general/res/sass/helpers/_wait-spinner.scss */ + .loading:before { + -moz-animation-name: rotateCentered; + -webkit-animation-name: rotateCentered; + animation-name: rotateCentered; + -moz-animation-duration: 0.5s; + -webkit-animation-duration: 0.5s; + animation-duration: 0.5s; + -moz-animation-iteration-count: infinite; + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite; + -moz-animation-timing-function: linear; + -webkit-animation-timing-function: linear; + animation-timing-function: linear; + border-color: rgba(119, 107, 162, 0.25); + border-top-color: #776ba2; + border-style: solid; + border-width: 5px; + -moz-border-radius: 100%; + -webkit-border-radius: 100%; + border-radius: 100%; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; + display: block; + position: absolute; + height: 0; + width: 0; + padding: 7%; + left: 50%; + top: 50%; + z-index: 10; } +@-moz-keyframes rotateCentered { + 0% { + transform: translateX(-50%) translateY(-50%) rotate(0deg); } + 100% { + transform: translateX(-50%) translateY(-50%) rotate(359deg); } } +@-webkit-keyframes rotateCentered { + 0% { + transform: translateX(-50%) translateY(-50%) rotate(0deg); } + 100% { + transform: translateX(-50%) translateY(-50%) rotate(359deg); } } +@keyframes rotateCentered { + 0% { + transform: translateX(-50%) translateY(-50%) rotate(0deg); } + 100% { + transform: translateX(-50%) translateY(-50%) rotate(359deg); } } + /* line 133, ../../../../general/res/sass/helpers/_wait-spinner.scss */ + .loading:after { + overflow: hidden; + position: absolute; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; + width: auto; + height: auto; + background: rgba(119, 107, 162, 0.1); + display: block; + z-index: 9; } + /* line 139, ../../../../general/res/sass/helpers/_wait-spinner.scss */ + .loading.tree-item:before { + padding: 0.375rem; + border-width: 2px; } + /* Styles for messages */ /* line 4, ../../../../general/res/sass/_messages.scss */ .message.block { @@ -3472,7 +3544,7 @@ span.req { .object-holder.l-controls-visible.l-time-controller-visible { bottom: 88px; } -/* line 305, ../../../../general/res/sass/user-environ/_layout.scss */ +/* line 302, ../../../../general/res/sass/user-environ/_layout.scss */ .object-browse-bar .s-btn, .object-browse-bar .s-menu-btn, .top-bar .buttons-main .s-btn, .top-bar .buttons-main .s-menu-btn, @@ -3484,12 +3556,12 @@ span.req { line-height: 25px; vertical-align: top; } -/* line 318, ../../../../general/res/sass/user-environ/_layout.scss */ +/* line 315, ../../../../general/res/sass/user-environ/_layout.scss */ .object-browse-bar .view-switcher, .top-bar .view-switcher { margin-right: 20px; } -/* line 323, ../../../../general/res/sass/user-environ/_layout.scss */ +/* line 320, ../../../../general/res/sass/user-environ/_layout.scss */ .object-browse-bar { overflow: visible; position: absolute; @@ -3505,22 +3577,22 @@ span.req { height: 24px; line-height: 24px; white-space: nowrap; } - /* line 331, ../../../../general/res/sass/user-environ/_layout.scss */ + /* line 328, ../../../../general/res/sass/user-environ/_layout.scss */ .object-browse-bar .left { padding-right: 20px; } - /* line 333, ../../../../general/res/sass/user-environ/_layout.scss */ + /* line 330, ../../../../general/res/sass/user-environ/_layout.scss */ .object-browse-bar .left .l-back { display: inline-block; float: left; margin-right: 10px; } -/* line 341, ../../../../general/res/sass/user-environ/_layout.scss */ +/* line 338, ../../../../general/res/sass/user-environ/_layout.scss */ .l-flex { display: flex; display: -webkit-flex; flex-flow: row nowrap; -webkit-flex-flow: row nowrap; } - /* line 344, ../../../../general/res/sass/user-environ/_layout.scss */ + /* line 341, ../../../../general/res/sass/user-environ/_layout.scss */ .l-flex .left { flex: 1 1 0; -webkit-flex: 1 1 0; @@ -4019,25 +4091,30 @@ span.req { position: relative; } /* line 228, ../../../../general/res/sass/search/_search.scss */ .search .search-scroll .load-icon { - position: relative; } - /* line 230, ../../../../general/res/sass/search/_search.scss */ - .search .search-scroll .load-icon.loading { - pointer-events: none; - margin-left: 6px; } - /* line 234, ../../../../general/res/sass/search/_search.scss */ - .search .search-scroll .load-icon.loading .title-label { - font-style: italic; - font-size: .9em; - opacity: 0.5; - margin-left: 26px; - line-height: 24px; } - /* line 244, ../../../../general/res/sass/search/_search.scss */ - .search .search-scroll .load-icon.loading .wait-spinner { - margin-left: 6px; } - /* line 249, ../../../../general/res/sass/search/_search.scss */ - .search .search-scroll .load-icon:not(.loading) { - cursor: pointer; } - /* line 254, ../../../../general/res/sass/search/_search.scss */ + position: relative; + /* &.loading { + pointer-events: none; + margin-left: $leftMargin; + + .title-label { + // Text styling + font-style: italic; + font-size: .9em; + opacity: 0.5; + + // Text positioning + margin-left: $iconWidth + $leftMargin; + line-height: 24px; + } + .wait-spinner { + margin-left: $leftMargin; + } + } + + &:not(.loading) { + cursor: pointer; + }*/ } + /* line 255, ../../../../general/res/sass/search/_search.scss */ .search .search-scroll .load-more-button { margin-top: 5px 0; font-size: 0.8em; @@ -4290,7 +4367,21 @@ ul.tree { height: 1.5rem; line-height: 1.5rem; margin-bottom: 3px; - position: relative; } + position: relative; + /* + &.loading { + pointer-events: none; + .label { + opacity: 0.5; + .title-label { + font-style: italic; + } + } + .wait-spinner { + margin-left: 14px; + } + } + */ } /* line 48, ../../../../general/res/sass/tree/_tree.scss */ .tree-item .view-control, .search-result-item .view-control { @@ -4372,63 +4463,47 @@ ul.tree { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } - /* line 115, ../../../../general/res/sass/tree/_tree.scss */ - .tree-item.loading, - .search-result-item.loading { - pointer-events: none; } - /* line 117, ../../../../general/res/sass/tree/_tree.scss */ - .tree-item.loading .label, - .search-result-item.loading .label { - opacity: 0.5; } - /* line 119, ../../../../general/res/sass/tree/_tree.scss */ - .tree-item.loading .label .title-label, - .search-result-item.loading .label .title-label { - font-style: italic; } - /* line 123, ../../../../general/res/sass/tree/_tree.scss */ - .tree-item.loading .wait-spinner, - .search-result-item.loading .wait-spinner { - margin-left: 14px; } - /* line 128, ../../../../general/res/sass/tree/_tree.scss */ + /* line 130, ../../../../general/res/sass/tree/_tree.scss */ .tree-item.selected, .search-result-item.selected { background: #1ac6ff; color: #fcfcfc; } - /* line 131, ../../../../general/res/sass/tree/_tree.scss */ + /* line 133, ../../../../general/res/sass/tree/_tree.scss */ .tree-item.selected .view-control, .search-result-item.selected .view-control { color: #fcfcfc; } - /* line 134, ../../../../general/res/sass/tree/_tree.scss */ + /* line 136, ../../../../general/res/sass/tree/_tree.scss */ .tree-item.selected .label .type-icon, .search-result-item.selected .label .type-icon { color: #fcfcfc; } @media screen and (min-device-width: 800px) and (min-device-height: 1025px), screen and (min-device-width: 1025px) and (min-device-height: 800px) { - /* line 142, ../../../../general/res/sass/tree/_tree.scss */ + /* line 144, ../../../../general/res/sass/tree/_tree.scss */ .tree-item:not(.selected):hover, .search-result-item:not(.selected):hover { background: rgba(102, 102, 102, 0.1); color: #333333; } - /* line 148, ../../../../general/res/sass/tree/_tree.scss */ + /* line 150, ../../../../general/res/sass/tree/_tree.scss */ .tree-item:not(.selected):hover .icon, .search-result-item:not(.selected):hover .icon { color: #0099cc; } } - /* line 155, ../../../../general/res/sass/tree/_tree.scss */ + /* line 157, ../../../../general/res/sass/tree/_tree.scss */ .tree-item:not(.loading), .search-result-item:not(.loading) { cursor: pointer; } - /* line 159, ../../../../general/res/sass/tree/_tree.scss */ + /* line 161, ../../../../general/res/sass/tree/_tree.scss */ .tree-item .context-trigger, .search-result-item .context-trigger { top: -1px; position: absolute; right: 3px; } - /* line 165, ../../../../general/res/sass/tree/_tree.scss */ + /* line 167, ../../../../general/res/sass/tree/_tree.scss */ .tree-item .context-trigger .invoke-menu, .search-result-item .context-trigger .invoke-menu { font-size: 0.75em; height: 0.9rem; line-height: 0.9rem; } -/* line 174, ../../../../general/res/sass/tree/_tree.scss */ +/* line 176, ../../../../general/res/sass/tree/_tree.scss */ .tree-item .label { left: 15px; } diff --git a/platform/commonUI/themes/snow/res/sass/_constants.scss b/platform/commonUI/themes/snow/res/sass/_constants.scss index e24d0d8b5a..f97f2a4df0 100644 --- a/platform/commonUI/themes/snow/res/sass/_constants.scss +++ b/platform/commonUI/themes/snow/res/sass/_constants.scss @@ -36,7 +36,7 @@ $timeControllerToiLineColor: $colorBodyFg; $timeControllerToiLineColorHov: #0052b5; // General Colors -$colorAlt1: #ff6600; +$colorAlt1: #776ba2; $colorAlert: #ff3c00; $colorIconLink: #49dedb; $colorPausedBg: #ff9900; @@ -161,4 +161,8 @@ $colorCalCellSelectedFg: $colorItemTreeSelectedFg; $colorCalCellInMonthBg: pullForward($colorMenuBg, 5%); // About Screen -$colorAboutLink: #84b3ff; \ No newline at end of file +$colorAboutLink: #84b3ff; + +// Loading +$colorLoadingFg: $colorAlt1; +$colorLoadingBg: rgba($colorLoadingFg, 0.1); \ No newline at end of file From fb0ce1eca82cf4c1f815fef2c2cf24ae63bc0b61 Mon Sep 17 00:00:00 2001 From: Charles Hacskaylo Date: Mon, 19 Oct 2015 11:13:50 -0700 Subject: [PATCH 26/26] [Frontend] New .loading class open #190 Removed old .loading styles previously commented out; --- .../general/res/sass/search/_search.scss | 25 ------------------- .../commonUI/general/res/sass/tree/_tree.scss | 21 ---------------- 2 files changed, 46 deletions(-) diff --git a/platform/commonUI/general/res/sass/search/_search.scss b/platform/commonUI/general/res/sass/search/_search.scss index 1993e7db78..85fadc5015 100644 --- a/platform/commonUI/general/res/sass/search/_search.scss +++ b/platform/commonUI/general/res/sass/search/_search.scss @@ -214,8 +214,6 @@ .search-scroll { order: 3; - - //padding-right: $rightPadding; margin-top: 4px; // Adjustable scrolling size @@ -227,29 +225,6 @@ .load-icon { position: relative; - -/* &.loading { - pointer-events: none; - margin-left: $leftMargin; - - .title-label { - // Text styling - font-style: italic; - font-size: .9em; - opacity: 0.5; - - // Text positioning - margin-left: $iconWidth + $leftMargin; - line-height: 24px; - } - .wait-spinner { - margin-left: $leftMargin; - } - } - - &:not(.loading) { - cursor: pointer; - }*/ } .load-more-button { diff --git a/platform/commonUI/general/res/sass/tree/_tree.scss b/platform/commonUI/general/res/sass/tree/_tree.scss index c3a820518b..d64f456b2e 100644 --- a/platform/commonUI/general/res/sass/tree/_tree.scss +++ b/platform/commonUI/general/res/sass/tree/_tree.scss @@ -83,7 +83,6 @@ ul.tree { .icon { &.l-icon-link, &.l-icon-alert { - //@include txtShdw($shdwItemTreeIcon); position: absolute; z-index: 2; } @@ -105,28 +104,12 @@ ul.tree { @include absPosDefault(); display: block; left: $runningItemW + ($interiorMargin * 3); - //right: $treeContextTriggerW + $interiorMargin; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } } - /* - &.loading { - pointer-events: none; - .label { - opacity: 0.5; - .title-label { - font-style: italic; - } - } - .wait-spinner { - margin-left: 14px; - } - } - */ - &.selected { background: $colorItemTreeSelectedBg; color: $colorItemTreeSelectedFg; @@ -144,9 +127,6 @@ ul.tree { &:hover { background: rgba($colorBodyFg, 0.1); //lighten($colorBodyBg, 5%); color: pullForward($colorBodyFg, 20%); - //.context-trigger { - // display: block; - //} .icon { color: $colorItemTreeIconHover; } @@ -160,7 +140,6 @@ ul.tree { .context-trigger { $h: 0.9rem; - //display: none; top: -1px; position: absolute; right: $interiorMarginSm;