You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sr...@apache.org on 2014/05/29 22:05:09 UTC
[1/8] Revert "AMBARI-5928. Create and populate Metrics section of a
slider app. (onechiporenko)" - changes made in ambari-web
Repository: ambari
Updated Branches:
refs/heads/branch-1.6.0.slider ac8a51cbf -> fc28f7ee3
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/contrib/views/slider/src/main/resources/ui/app/assets/data/apptypes/all_fields.json
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/assets/data/apptypes/all_fields.json b/contrib/views/slider/src/main/resources/ui/app/assets/data/apptypes/all_fields.json
index 68fef3c..56fe759 100644
--- a/contrib/views/slider/src/main/resources/ui/app/assets/data/apptypes/all_fields.json
+++ b/contrib/views/slider/src/main/resources/ui/app/assets/data/apptypes/all_fields.json
@@ -60,6 +60,17 @@
"maxInstanceCount" : 0,
"yarnMemory" : 1024,
"yarnCpuCores" : 1
+ },
+ {
+ "id" : "ACCUMULO_CLIENT",
+ "name" : "ACCUMULO_CLIENT",
+ "category" : "CLIENT",
+ "displayName" : "ACCUMULO_CLIENT",
+ "priority" : 0,
+ "instanceCount" : 0,
+ "maxInstanceCount" : 0,
+ "yarnMemory" : 1024,
+ "yarnCpuCores" : 1
}
],
"typeDescription" : "The Apache Accumulo sorted, distributed key/value store is a robust,\n scalable, high performance data storage system that features cell-based\n access control and customizable server-side processing. It is based on\n Google's BigTable design and is built on top of Apache Hadoop,\n Zookeeper, and Thrift.\n Requirements:\n 1. Ensure parent dir for path (accumulo-site/instance.dfs.dir) is accessible to the App owner.",
@@ -111,7 +122,7 @@
}
},
{
- "href" : "http://162.216.148.58:8080/api/v1/views/SLIDER/versions/1.0.0/instances/SLIDER_1/apptypes/HBASE",
+ "href" : "http://c6401:8080/api/v1/views/SLIDER/versions/1.0.0/instances/SLIDER_1/apptypes/HBASE",
"id" : "HBASE",
"instance_name" : "SLIDER_1",
"typeComponents" : [
@@ -136,278 +147,25 @@
"maxInstanceCount" : 0,
"yarnMemory" : 1024,
"yarnCpuCores" : 1
+ },
+ {
+ "id" : "HBASE_CLIENT",
+ "name" : "HBASE_CLIENT",
+ "category" : "CLIENT",
+ "displayName" : "HBASE_CLIENT",
+ "priority" : 0,
+ "instanceCount" : 0,
+ "maxInstanceCount" : 0,
+ "yarnMemory" : 1024,
+ "yarnCpuCores" : 1
}
],
"typeDescription" : "Apache HBase is the Hadoop database, a distributed, scalable, big data store.\n Requirements:\n 1. Ensure parent dir for path (hbase-site/hbase.rootdir) is accessible to the App owner.\n 2. Ensure ZK root (hbase-site/zookeeper.znode.parent) is unique for the App instance.",
"typeName" : "HBASE",
- "typePackageFileName" : "hbase_v096.zip",
+ "typePackageFileName" : "hbase_v096 (1).zip",
"typeVersion" : "0.96.0.2.1.1",
"version" : "1.0.0",
"view_name" : "SLIDER",
- "gangliaMetrics" : {
- "Component" : {
- "HBASE_MASTER" : {
- "ClusterId" : {
- "metric" : "Hadoop:service=HBase,name=Master,sub=Server.tag.clusterId",
- "pointInTime" : true,
- "temporal" : false,
- "keyName" : "Hadoop:service=HBase,name=Master,sub=Server",
- "matchers" : [
- [
- "tag",
- "clusterId"
- ],
- [
- "tag.clusterId"
- ]
- ]
- },
- "DeadRegionServers" : {
- "metric" : "Hadoop:service=HBase,name=Master,sub=Server.numDeadRegionServers",
- "pointInTime" : true,
- "temporal" : false,
- "keyName" : "Hadoop:service=HBase,name=Master,sub=Server",
- "matchers" : [
- [
- "numDeadRegionServers"
- ]
- ]
- },
- "IsActiveMaster" : {
- "metric" : "Hadoop:service=HBase,name=Master,sub=Server.tag.isActiveMaster",
- "pointInTime" : true,
- "temporal" : false,
- "keyName" : "Hadoop:service=HBase,name=Master,sub=Server",
- "matchers" : [
- [
- "tag",
- "isActiveMaster"
- ],
- [
- "tag.isActiveMaster"
- ]
- ]
- },
- "MasterActiveTime" : {
- "metric" : "Hadoop:service=HBase,name=Master,sub=Server.masterActiveTime",
- "pointInTime" : true,
- "temporal" : false,
- "keyName" : "Hadoop:service=HBase,name=Master,sub=Server",
- "matchers" : [
- [
- "masterActiveTime"
- ]
- ]
- },
- "MasterStartTime" : {
- "metric" : "Hadoop:service=HBase,name=Master,sub=Server.masterStartTime",
- "pointInTime" : true,
- "temporal" : false,
- "keyName" : "Hadoop:service=HBase,name=Master,sub=Server",
- "matchers" : [
- [
- "masterStartTime"
- ]
- ]
- },
- "RegionServers" : {
- "metric" : "Hadoop:service=HBase,name=Master,sub=Server.numRegionServers",
- "pointInTime" : true,
- "temporal" : false,
- "keyName" : "Hadoop:service=HBase,name=Master,sub=Server",
- "matchers" : [
- [
- "numRegionServers"
- ]
- ]
- },
- "ServerName" : {
- "metric" : "Hadoop:service=HBase,name=Master,sub=Server.tag.serverName",
- "pointInTime" : true,
- "temporal" : false,
- "keyName" : "Hadoop:service=HBase,name=Master,sub=Server",
- "matchers" : [
- [
- "tag",
- "serverName"
- ],
- [
- "tag.serverName"
- ]
- ]
- },
- "ZookeeperQuorum" : {
- "metric" : "Hadoop:service=HBase,name=Master,sub=Server.tag.zookeeperQuorum",
- "pointInTime" : true,
- "temporal" : false,
- "keyName" : "Hadoop:service=HBase,name=Master,sub=Server",
- "matchers" : [
- [
- "tag",
- "zookeeperQuorum"
- ],
- [
- "tag.zookeeperQuorum"
- ]
- ]
- },
- "cluster_requests" : {
- "metric" : "Hadoop:service=HBase,name=Master,sub=Server.clusterRequests",
- "pointInTime" : true,
- "temporal" : false,
- "keyName" : "Hadoop:service=HBase,name=Master,sub=Server",
- "matchers" : [
- [
- "clusterRequests"
- ]
- ]
- },
- "metricAverageLoad" : {
- "metric" : "Hadoop:service=HBase,name=Master,sub=Server.averageLoad",
- "pointInTime" : true,
- "temporal" : false,
- "keyName" : "Hadoop:service=HBase,name=Master,sub=Server",
- "matchers" : [
- [
- "averageLoad"
- ]
- ]
- }
- }
- }
- },
- "jmxMetrics" : {
- "Component" : {
- "HBASE_MASTER" : {
- "ClusterId" : {
- "metric" : "Hadoop:service=HBase,name=Master,sub=Server.tag.clusterId",
- "pointInTime" : true,
- "temporal" : false,
- "keyName" : "Hadoop:service=HBase,name=Master,sub=Server",
- "matchers" : [
- [
- "tag",
- "clusterId"
- ],
- [
- "tag.clusterId"
- ]
- ]
- },
- "DeadRegionServers" : {
- "metric" : "Hadoop:service=HBase,name=Master,sub=Server.numDeadRegionServers",
- "pointInTime" : true,
- "temporal" : false,
- "keyName" : "Hadoop:service=HBase,name=Master,sub=Server",
- "matchers" : [
- [
- "numDeadRegionServers"
- ]
- ]
- },
- "IsActiveMaster" : {
- "metric" : "Hadoop:service=HBase,name=Master,sub=Server.tag.isActiveMaster",
- "pointInTime" : true,
- "temporal" : false,
- "keyName" : "Hadoop:service=HBase,name=Master,sub=Server",
- "matchers" : [
- [
- "tag",
- "isActiveMaster"
- ],
- [
- "tag.isActiveMaster"
- ]
- ]
- },
- "MasterActiveTime" : {
- "metric" : "Hadoop:service=HBase,name=Master,sub=Server.masterActiveTime",
- "pointInTime" : true,
- "temporal" : false,
- "keyName" : "Hadoop:service=HBase,name=Master,sub=Server",
- "matchers" : [
- [
- "masterActiveTime"
- ]
- ]
- },
- "MasterStartTime" : {
- "metric" : "Hadoop:service=HBase,name=Master,sub=Server.masterStartTime",
- "pointInTime" : true,
- "temporal" : false,
- "keyName" : "Hadoop:service=HBase,name=Master,sub=Server",
- "matchers" : [
- [
- "masterStartTime"
- ]
- ]
- },
- "RegionServers" : {
- "metric" : "Hadoop:service=HBase,name=Master,sub=Server.numRegionServers",
- "pointInTime" : true,
- "temporal" : false,
- "keyName" : "Hadoop:service=HBase,name=Master,sub=Server",
- "matchers" : [
- [
- "numRegionServers"
- ]
- ]
- },
- "ServerName" : {
- "metric" : "Hadoop:service=HBase,name=Master,sub=Server.tag.serverName",
- "pointInTime" : true,
- "temporal" : false,
- "keyName" : "Hadoop:service=HBase,name=Master,sub=Server",
- "matchers" : [
- [
- "tag",
- "serverName"
- ],
- [
- "tag.serverName"
- ]
- ]
- },
- "ZookeeperQuorum" : {
- "metric" : "Hadoop:service=HBase,name=Master,sub=Server.tag.zookeeperQuorum",
- "pointInTime" : true,
- "temporal" : false,
- "keyName" : "Hadoop:service=HBase,name=Master,sub=Server",
- "matchers" : [
- [
- "tag",
- "zookeeperQuorum"
- ],
- [
- "tag.zookeeperQuorum"
- ]
- ]
- },
- "cluster_requests" : {
- "metric" : "Hadoop:service=HBase,name=Master,sub=Server.clusterRequests",
- "pointInTime" : true,
- "temporal" : false,
- "keyName" : "Hadoop:service=HBase,name=Master,sub=Server",
- "matchers" : [
- [
- "clusterRequests"
- ]
- ]
- },
- "metricAverageLoad" : {
- "metric" : "Hadoop:service=HBase,name=Master,sub=Server.averageLoad",
- "pointInTime" : true,
- "temporal" : false,
- "keyName" : "Hadoop:service=HBase,name=Master,sub=Server",
- "matchers" : [
- [
- "averageLoad"
- ]
- ]
- }
- }
- }
- },
"typeConfigs" : {
"agent.conf" : "/slider/agent/conf/agent.ini",
"application.def" : "/slider/hbase_v096.zip",
@@ -463,11 +221,9 @@
}
},
{
- "href" : "http://162.216.148.58:8080/api/v1/views/SLIDER/versions/1.0.0/instances/SLIDER_1/apptypes/STORM",
- "gangliaMetrics" : null,
+ "href" : "http://c6401:8080/api/v1/views/SLIDER/versions/1.0.0/instances/SLIDER_1/apptypes/STORM",
"id" : "STORM",
"instance_name" : "SLIDER_1",
- "jmxMetrics" : null,
"typeComponents" : [
{
"id" : "NIMBUS",
@@ -637,4 +393,4 @@
}
}
]
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/contrib/views/slider/src/main/resources/ui/app/controllers/slider_app_controller.js
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/controllers/slider_app_controller.js b/contrib/views/slider/src/main/resources/ui/app/controllers/slider_app_controller.js
index 77bf0a0..06af9f3 100644
--- a/contrib/views/slider/src/main/resources/ui/app/controllers/slider_app_controller.js
+++ b/contrib/views/slider/src/main/resources/ui/app/controllers/slider_app_controller.js
@@ -105,6 +105,7 @@ App.SliderAppController = Ember.ObjectController.extend({
},
/**
+ * Do request to delete current slider's app
* Do request to <strong>freeze</strong> current slider's app
* @returns {$.ajax}
* @method freeze
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/contrib/views/slider/src/main/resources/ui/app/helpers/ajax.js
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/helpers/ajax.js b/contrib/views/slider/src/main/resources/ui/app/helpers/ajax.js
index 64c8385..66b97bd 100644
--- a/contrib/views/slider/src/main/resources/ui/app/helpers/ajax.js
+++ b/contrib/views/slider/src/main/resources/ui/app/helpers/ajax.js
@@ -102,28 +102,7 @@ var urls = {
data: JSON.stringify(data.data)
}
}
- },
-
- 'metrics': {
- real: 'apps/{id}/metrics/{metric}',
- mock: '/data/metrics/metric.json'
- },
-
- 'metrics2': {
- real: 'apps/{id}/metrics/{metric}',
- mock: '/data/metrics/metric2.json'
- },
-
- 'metrics3': {
- real: 'apps/{id}/metrics/{metric}',
- mock: '/data/metrics/metric3.json'
- },
-
- 'metrics4': {
- real: 'apps/{id}/metrics/{metric}',
- mock: '/data/metrics/metric4.json'
}
-
};
/**
* Replace data-placeholders to its values
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/contrib/views/slider/src/main/resources/ui/app/helpers/helper.js
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/helpers/helper.js b/contrib/views/slider/src/main/resources/ui/app/helpers/helper.js
index bfa0a68..75323c2 100644
--- a/contrib/views/slider/src/main/resources/ui/app/helpers/helper.js
+++ b/contrib/views/slider/src/main/resources/ui/app/helpers/helper.js
@@ -24,45 +24,4 @@ String.prototype.format = function () {
});
};
-/**
- * Helper function for bound property helper registration
- * @memberof App
- * @method registerBoundHelper
- * @param name {String} name of helper
- * @param view {Em.View} view
- */
-App.registerBoundHelper = function(name, view) {
- Ember.Handlebars.registerHelper(name, function(property, options) {
- options.hash.contentBinding = property;
- return Ember.Handlebars.helpers.view.call(this, view, options);
- });
-};
-
-
-/**
- * Return formatted string with inserted <code>wbr</code>-tag after each dot
- *
- * @param {String} content
- *
- * Examples:
- *
- * returns 'apple'
- * {{formatWordBreak 'apple'}}
- *
- * returns 'apple.<wbr />banana'
- * {{formatWordBreak 'apple.banana'}}
- *
- * returns 'apple.<wbr />banana.<wbr />uranium'
- * {{formatWordBreak 'apple.banana.uranium'}}
- */
-App.registerBoundHelper('formatWordBreak', Em.View.extend({
- tagName: 'span',
- template: Ember.Handlebars.compile('{{{view.result}}}'),
- /**
- * @type {string}
- */
- result: function() {
- return this.get('content') && this.get('content').replace(/\//g, '/<wbr />');
- }.property('content')
-}));
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/contrib/views/slider/src/main/resources/ui/app/mappers/slider_apps_mapper.js
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/mappers/slider_apps_mapper.js b/contrib/views/slider/src/main/resources/ui/app/mappers/slider_apps_mapper.js
index 488390b..7811ce0 100644
--- a/contrib/views/slider/src/main/resources/ui/app/mappers/slider_apps_mapper.js
+++ b/contrib/views/slider/src/main/resources/ui/app/mappers/slider_apps_mapper.js
@@ -112,13 +112,6 @@ App.SliderAppsMapper = App.Mapper.createWithMixins(App.RunPeriodically, {
return quickLinks.mapProperty('id');
},
- parseObject: function(o) {
- if (Ember.typeOf(o) !== 'object') return [];
- return Ember.keys(o).map(function(key) {
- return {key: key, value: o[key]};
- });
- },
-
/**
* Parse loaded data
* Load <code>App.SliderApp</code> model
@@ -132,9 +125,8 @@ App.SliderAppsMapper = App.Mapper.createWithMixins(App.RunPeriodically, {
data.items.forEach(function(app) {
var componentsId = app.components ? self.parseComponents(app) : [],
- configs = app.configs ? self.parseConfigs(app) : {},
- quickLinks = self.parseQuickLinks(app),
- jmx = self.parseObject(app.jmx);
+ configs = app.configs ? self.parseConfigs(app) : {};
+ quickLinks = self.parseQuickLinks(app);
apps.push(
Ember.Object.create({
@@ -150,7 +142,6 @@ App.SliderAppsMapper = App.Mapper.createWithMixins(App.RunPeriodically, {
components: componentsId,
quickLinks: quickLinks,
configs: configs,
- jmx: jmx,
runtimeProperties: app.configs
})
);
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/contrib/views/slider/src/main/resources/ui/app/models/slider_app.js
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/models/slider_app.js b/contrib/views/slider/src/main/resources/ui/app/models/slider_app.js
index f82adcf..14c4a32 100644
--- a/contrib/views/slider/src/main/resources/ui/app/models/slider_app.js
+++ b/contrib/views/slider/src/main/resources/ui/app/models/slider_app.js
@@ -92,8 +92,6 @@ App.SliderApp = DS.Model.extend({
*/
configs: DS.attr('object'),
- jmx: DS.attr('object'),
-
/**
* Global configs
* @type {{key: string, value: *}[]}
@@ -101,7 +99,7 @@ App.SliderApp = DS.Model.extend({
globals: function() {
var c = this.get('configs.global');
return this.mapObject(c);
- }.property('configs.@each'),
+ }.property('configs.global'),
/**
* HBase-Site configs
@@ -110,7 +108,7 @@ App.SliderApp = DS.Model.extend({
hbaseSite: function() {
var c = this.get('configs.hbase-site');
return this.mapObject(c);
- }.property('configs.@each'),
+ }.property('configs.hbase-site'),
/**
* Configs which are not in global or hbase-site
@@ -126,15 +124,7 @@ App.SliderApp = DS.Model.extend({
ret = ret.concat(self.mapObject(c[key]));
});
return ret;
- }.property('configs.@each'),
-
- /**
- * Display metrics only for running apps
- * @type {boolean}
- */
- showMetrics: function() {
- return App.SliderApp.Status.running === this.get('status');
- }.property('status'),
+ }.property('configs'),
/**
* Map object to array
@@ -161,4 +151,4 @@ App.SliderApp.Status = {
new_saving: "NEW_SAVING",
running: "RUNNING" ,
submitted:"SUBMITTED"
-};
+};
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/contrib/views/slider/src/main/resources/ui/app/routes/main.js
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/routes/main.js b/contrib/views/slider/src/main/resources/ui/app/routes/main.js
index 07babda..f875ffa 100644
--- a/contrib/views/slider/src/main/resources/ui/app/routes/main.js
+++ b/contrib/views/slider/src/main/resources/ui/app/routes/main.js
@@ -18,10 +18,6 @@
App.IndexRoute = Ember.Route.extend({
- model: function () {
- return this.modelFor('sliderApps');
- },
-
redirect: function () {
this.transitionTo('slider_apps');
}
@@ -44,7 +40,7 @@ App.SliderAppsRoute = Ember.Route.extend({
App.SliderAppRoute = Ember.Route.extend({
model: function(params) {
- return this.store.all('sliderApp', params.slider_app_id);
+ return this.store.find('sliderApp', params.slider_app_id);
}
});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/contrib/views/slider/src/main/resources/ui/app/styles/application.less
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/styles/application.less b/contrib/views/slider/src/main/resources/ui/app/styles/application.less
index a4347b9..cbf466c 100644
--- a/contrib/views/slider/src/main/resources/ui/app/styles/application.less
+++ b/contrib/views/slider/src/main/resources/ui/app/styles/application.less
@@ -504,94 +504,4 @@ a {
}
.modal-backdrop.in {
opacity:0;
-}
-
-/**
- * App Summary Page
- */
-.app_summary {
- .container {
- padding-left: 0;
- }
-}
-
-
-.chart-container {
- cursor: default;
-
- position: relative;
- margin: 20px 15px 0px 15px;
-
- .chart {
- position: relative;
- z-index: 1;
- }
- .chart-y-axis {
- position: absolute;
- top: 0;
- bottom: 0px;
- width: 100px;
- z-index: 2;
- margin-top: 15px;
- }
- .chart-x-axis {
- position: absolute;
- top: 180px;
- left: 35%;
- width: 30%;
- z-index: 2;
- }
- .x_tick {
- margin-top: 5px;
- .title {
- padding: 0 2px 0 2px;
- opacity: 1 !important;
- top: 148px;
- }
- }
- svg {
- g {
- g:nth-child(1) {
- display: none;
- }
- }
- }
- text {
- font-weight: 700;
- opacity: 1 !important;
- }
- .chart-legend {
- font-family: 'Courier New';
- position: absolute;
- top: 180px;
- z-index: 3;
- }
- .rickshaw_legend {
- background-color: #999 !important;
- li:hover {
- background-color: #999 !important;
- }
- }
- .rickshaw_legend:empty {
- padding: 0;
- }
- .rickshaw_graph {
- .x_tick {
- .title {
- bottom: -6px;
- opacity: 0.75;
- }
- }
- }
- .chart-overlay {
- position: absolute;
- top: 0;
- bottom: 0;
- width: 100%;
- z-index: 5;
- }
- .chart-title {
- text-align: center;
- margin-top: 20px;
- }
-}
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/contrib/views/slider/src/main/resources/ui/app/templates/slider_app/configs.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/templates/slider_app/configs.hbs b/contrib/views/slider/src/main/resources/ui/app/templates/slider_app/configs.hbs
index 520ed45..5e07e57 100644
--- a/contrib/views/slider/src/main/resources/ui/app/templates/slider_app/configs.hbs
+++ b/contrib/views/slider/src/main/resources/ui/app/templates/slider_app/configs.hbs
@@ -29,7 +29,7 @@
{{#each model.otherConfigs}}
<tr>
<td>{{key}}</td>
- <td>{{formatWordBreak value}}</td>
+ <td>{{value}}</td>
</tr>
{{/each}}
</tbody>
@@ -50,7 +50,7 @@
{{#each model.globals}}
<tr>
<td>{{key}}</td>
- <td>{{formatWordBreak value}}</td>
+ <td>{{value}}</td>
</tr>
{{/each}}
</tbody>
@@ -71,10 +71,10 @@
{{#each model.hbaseSite}}
<tr>
<td>{{key}}</td>
- <td>{{formatWordBreak value}}</td>
+ <td>{{value}}</td>
</tr>
{{/each}}
</tbody>
</table>
{{/bs-panel}}
-{{/if}}
+{{/if}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/contrib/views/slider/src/main/resources/ui/app/templates/slider_app/summary.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/templates/slider_app/summary.hbs b/contrib/views/slider/src/main/resources/ui/app/templates/slider_app/summary.hbs
index dbf6f62..fab5ea8 100644
--- a/contrib/views/slider/src/main/resources/ui/app/templates/slider_app/summary.hbs
+++ b/contrib/views/slider/src/main/resources/ui/app/templates/slider_app/summary.hbs
@@ -15,27 +15,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
}}
+Summary
-<div class="container">
- <div class="row">
- <div class="col-md-6">
- {{#bs-panel heading="Summary"}}
- {{/bs-panel}}
- </div>
- <div class="col-md-6">
- {{#bs-panel heading="Components"}}
- {{/bs-panel}}
- </div>
- </div>
- {{#if controller.model.showMetrics}}
- {{#bs-panel heading="Metrics"}}
- {{#each graphs in view.parentView.graphs}}
- <div class="row">
- {{#each graph in graphs}}
- <div class="col-md-3">{{view graph}}</div>
- {{/each}}
- </div>
- {{/each}}
- {{/bs-panel}}
- {{/if}}
-</div>
\ No newline at end of file
+{{model.id}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/contrib/views/slider/src/main/resources/ui/config.js
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/config.js b/contrib/views/slider/src/main/resources/ui/config.js
index 978d984..8ba0087 100755
--- a/contrib/views/slider/src/main/resources/ui/config.js
+++ b/contrib/views/slider/src/main/resources/ui/config.js
@@ -28,15 +28,8 @@ exports.config = {
},
order: {
before: [
- 'vendor/scripts/common/d3.v2.js',
- 'vendor/scripts/common/cubism.v1.js',
- 'vendor/scripts/common/rickshaw.js',
'vendor/scripts/common/console-polyfill.js',
'vendor/scripts/common/jquery.js',
- 'vendor/scripts/common/jquery.ui.core.js',
- 'vendor/scripts/common/jquery.ui.widget.js',
- 'vendor/scripts/common/jquery.ui.mouse.js',
- 'vendor/scripts/common/jquery.ui.sortable.js',
'vendor/scripts/common/handlebars.js',
'vendor/scripts/development/ember.js',
'vendor/scripts/production/ember-data.js',
@@ -56,8 +49,6 @@ exports.config = {
},
order: {
before: [
- 'vendor/styles/cubism.css',
- 'vendor/styles/rickshaw.css',
'vendor/styles/bootstrap.css',
'vendor/styles/font-awesome.css',
'vendor/styles/font-awesome-ie7.css'
@@ -84,9 +75,6 @@ exports.config = {
},
order: {
before: [
- 'vendor/scripts/common/d3.v2.js',
- 'vendor/scripts/common/cubism.v1.js',
- 'vendor/scripts/common/rickshaw.js',
'vendor/scripts/common/console-polyfill.js',
'vendor/scripts/common/jquery.js',
'vendor/scripts/common/handlebars.js',
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/contrib/views/slider/src/main/resources/ui/package.json
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/package.json b/contrib/views/slider/src/main/resources/ui/package.json
index daf0943..2d2ea16 100755
--- a/contrib/views/slider/src/main/resources/ui/package.json
+++ b/contrib/views/slider/src/main/resources/ui/package.json
@@ -26,6 +26,7 @@
"stylus-brunch": "~1.7.0",
"uglify-js-brunch": "~1.7.0",
"clean-css-brunch": "~1.7.0",
+ "auto-reload-brunch": "~1.7.0",
"ember-handlebars-brunch": "git://github.com/fuseelements/ember-handlebars-brunch#fix/ember-1.3.0"
},
"devDependencies": {
[4/8] Revert "AMBARI-5928. Create and populate Metrics section of a
slider app. (onechiporenko)" - changes made in ambari-web
Posted by sr...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/d3.v2.js
----------------------------------------------------------------------
diff --git a/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/d3.v2.js b/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/d3.v2.js
deleted file mode 100644
index 991bd5e..0000000
--- a/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/d3.v2.js
+++ /dev/null
@@ -1,7033 +0,0 @@
-(function() {
- function d3_class(ctor, properties) {
- try {
- for (var key in properties) {
- Object.defineProperty(ctor.prototype, key, {
- value: properties[key],
- enumerable: false
- });
- }
- } catch (e) {
- ctor.prototype = properties;
- }
- }
- function d3_arrayCopy(pseudoarray) {
- var i = -1, n = pseudoarray.length, array = [];
- while (++i < n) array.push(pseudoarray[i]);
- return array;
- }
- function d3_arraySlice(pseudoarray) {
- return Array.prototype.slice.call(pseudoarray);
- }
- function d3_Map() {}
- function d3_identity(d) {
- return d;
- }
- function d3_this() {
- return this;
- }
- function d3_true() {
- return true;
- }
- function d3_functor(v) {
- return typeof v === "function" ? v : function() {
- return v;
- };
- }
- function d3_rebind(target, source, method) {
- return function() {
- var value = method.apply(source, arguments);
- return arguments.length ? target : value;
- };
- }
- function d3_number(x) {
- return x != null && !isNaN(x);
- }
- function d3_zipLength(d) {
- return d.length;
- }
- function d3_splitter(d) {
- return d == null;
- }
- function d3_collapse(s) {
- return s.trim().replace(/\s+/g, " ");
- }
- function d3_range_integerScale(x) {
- var k = 1;
- while (x * k % 1) k *= 10;
- return k;
- }
- function d3_dispatch() {}
- function d3_dispatch_event(dispatch) {
- function event() {
- var z = listeners, i = -1, n = z.length, l;
- while (++i < n) if (l = z[i].on) l.apply(this, arguments);
- return dispatch;
- }
- var listeners = [], listenerByName = new d3_Map;
- event.on = function(name, listener) {
- var l = listenerByName.get(name), i;
- if (arguments.length < 2) return l && l.on;
- if (l) {
- l.on = null;
- listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));
- listenerByName.remove(name);
- }
- if (listener) listeners.push(listenerByName.set(name, {
- on: listener
- }));
- return dispatch;
- };
- return event;
- }
- function d3_format_precision(x, p) {
- return p - (x ? 1 + Math.floor(Math.log(x + Math.pow(10, 1 + Math.floor(Math.log(x) / Math.LN10) - p)) / Math.LN10) : 1);
- }
- function d3_format_typeDefault(x) {
- return x + "";
- }
- function d3_format_group(value) {
- var i = value.lastIndexOf("."), f = i >= 0 ? value.substring(i) : (i = value.length, ""), t = [];
- while (i > 0) t.push(value.substring(i -= 3, i + 3));
- return t.reverse().join(",") + f;
- }
- function d3_formatPrefix(d, i) {
- var k = Math.pow(10, Math.abs(8 - i) * 3);
- return {
- scale: i > 8 ? function(d) {
- return d / k;
- } : function(d) {
- return d * k;
- },
- symbol: d
- };
- }
- function d3_ease_clamp(f) {
- return function(t) {
- return t <= 0 ? 0 : t >= 1 ? 1 : f(t);
- };
- }
- function d3_ease_reverse(f) {
- return function(t) {
- return 1 - f(1 - t);
- };
- }
- function d3_ease_reflect(f) {
- return function(t) {
- return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));
- };
- }
- function d3_ease_identity(t) {
- return t;
- }
- function d3_ease_poly(e) {
- return function(t) {
- return Math.pow(t, e);
- };
- }
- function d3_ease_sin(t) {
- return 1 - Math.cos(t * Math.PI / 2);
- }
- function d3_ease_exp(t) {
- return Math.pow(2, 10 * (t - 1));
- }
- function d3_ease_circle(t) {
- return 1 - Math.sqrt(1 - t * t);
- }
- function d3_ease_elastic(a, p) {
- var s;
- if (arguments.length < 2) p = .45;
- if (arguments.length < 1) {
- a = 1;
- s = p / 4;
- } else s = p / (2 * Math.PI) * Math.asin(1 / a);
- return function(t) {
- return 1 + a * Math.pow(2, 10 * -t) * Math.sin((t - s) * 2 * Math.PI / p);
- };
- }
- function d3_ease_back(s) {
- if (!s) s = 1.70158;
- return function(t) {
- return t * t * ((s + 1) * t - s);
- };
- }
- function d3_ease_bounce(t) {
- return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;
- }
- function d3_eventCancel() {
- d3.event.stopPropagation();
- d3.event.preventDefault();
- }
- function d3_eventSource() {
- var e = d3.event, s;
- while (s = e.sourceEvent) e = s;
- return e;
- }
- function d3_eventDispatch(target) {
- var dispatch = new d3_dispatch, i = 0, n = arguments.length;
- while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);
- dispatch.of = function(thiz, argumentz) {
- return function(e1) {
- try {
- var e0 = e1.sourceEvent = d3.event;
- e1.target = target;
- d3.event = e1;
- dispatch[e1.type].apply(thiz, argumentz);
- } finally {
- d3.event = e0;
- }
- };
- };
- return dispatch;
- }
- function d3_transform(m) {
- var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;
- if (r0[0] * r1[1] < r1[0] * r0[1]) {
- r0[0] *= -1;
- r0[1] *= -1;
- kx *= -1;
- kz *= -1;
- }
- this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_transformDegrees;
- this.translate = [ m.e, m.f ];
- this.scale = [ kx, ky ];
- this.skew = ky ? Math.atan2(kz, ky) * d3_transformDegrees : 0;
- }
- function d3_transformDot(a, b) {
- return a[0] * b[0] + a[1] * b[1];
- }
- function d3_transformNormalize(a) {
- var k = Math.sqrt(d3_transformDot(a, a));
- if (k) {
- a[0] /= k;
- a[1] /= k;
- }
- return k;
- }
- function d3_transformCombine(a, b, k) {
- a[0] += k * b[0];
- a[1] += k * b[1];
- return a;
- }
- function d3_interpolateByName(name) {
- return name == "transform" ? d3.interpolateTransform : d3.interpolate;
- }
- function d3_uninterpolateNumber(a, b) {
- b = b - (a = +a) ? 1 / (b - a) : 0;
- return function(x) {
- return (x - a) * b;
- };
- }
- function d3_uninterpolateClamp(a, b) {
- b = b - (a = +a) ? 1 / (b - a) : 0;
- return function(x) {
- return Math.max(0, Math.min(1, (x - a) * b));
- };
- }
- function d3_rgb(r, g, b) {
- return new d3_Rgb(r, g, b);
- }
- function d3_Rgb(r, g, b) {
- this.r = r;
- this.g = g;
- this.b = b;
- }
- function d3_rgb_hex(v) {
- return v < 16 ? "0" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);
- }
- function d3_rgb_parse(format, rgb, hsl) {
- var r = 0, g = 0, b = 0, m1, m2, name;
- m1 = /([a-z]+)\((.*)\)/i.exec(format);
- if (m1) {
- m2 = m1[2].split(",");
- switch (m1[1]) {
- case "hsl":
- {
- return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);
- }
- case "rgb":
- {
- return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));
- }
- }
- }
- if (name = d3_rgb_names.get(format)) return rgb(name.r, name.g, name.b);
- if (format != null && format.charAt(0) === "#") {
- if (format.length === 4) {
- r = format.charAt(1);
- r += r;
- g = format.charAt(2);
- g += g;
- b = format.charAt(3);
- b += b;
- } else if (format.length === 7) {
- r = format.substring(1, 3);
- g = format.substring(3, 5);
- b = format.substring(5, 7);
- }
- r = parseInt(r, 16);
- g = parseInt(g, 16);
- b = parseInt(b, 16);
- }
- return rgb(r, g, b);
- }
- function d3_rgb_hsl(r, g, b) {
- var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;
- if (d) {
- s = l < .5 ? d / (max + min) : d / (2 - max - min);
- if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4;
- h *= 60;
- } else {
- s = h = 0;
- }
- return d3_hsl(h, s, l);
- }
- function d3_rgb_lab(r, g, b) {
- r = d3_rgb_xyz(r);
- g = d3_rgb_xyz(g);
- b = d3_rgb_xyz(b);
- var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);
- return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));
- }
- function d3_rgb_xyz(r) {
- return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);
- }
- function d3_rgb_parseNumber(c) {
- var f = parseFloat(c);
- return c.charAt(c.length - 1) === "%" ? Math.round(f * 2.55) : f;
- }
- function d3_hsl(h, s, l) {
- return new d3_Hsl(h, s, l);
- }
- function d3_Hsl(h, s, l) {
- this.h = h;
- this.s = s;
- this.l = l;
- }
- function d3_hsl_rgb(h, s, l) {
- function v(h) {
- if (h > 360) h -= 360; else if (h < 0) h += 360;
- if (h < 60) return m1 + (m2 - m1) * h / 60;
- if (h < 180) return m2;
- if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;
- return m1;
- }
- function vv(h) {
- return Math.round(v(h) * 255);
- }
- var m1, m2;
- h = h % 360;
- if (h < 0) h += 360;
- s = s < 0 ? 0 : s > 1 ? 1 : s;
- l = l < 0 ? 0 : l > 1 ? 1 : l;
- m2 = l <= .5 ? l * (1 + s) : l + s - l * s;
- m1 = 2 * l - m2;
- return d3_rgb(vv(h + 120), vv(h), vv(h - 120));
- }
- function d3_hcl(h, c, l) {
- return new d3_Hcl(h, c, l);
- }
- function d3_Hcl(h, c, l) {
- this.h = h;
- this.c = c;
- this.l = l;
- }
- function d3_hcl_lab(h, c, l) {
- return d3_lab(l, Math.cos(h *= Math.PI / 180) * c, Math.sin(h) * c);
- }
- function d3_lab(l, a, b) {
- return new d3_Lab(l, a, b);
- }
- function d3_Lab(l, a, b) {
- this.l = l;
- this.a = a;
- this.b = b;
- }
- function d3_lab_rgb(l, a, b) {
- var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;
- x = d3_lab_xyz(x) * d3_lab_X;
- y = d3_lab_xyz(y) * d3_lab_Y;
- z = d3_lab_xyz(z) * d3_lab_Z;
- return d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));
- }
- function d3_lab_hcl(l, a, b) {
- return d3_hcl(Math.atan2(b, a) / Math.PI * 180, Math.sqrt(a * a + b * b), l);
- }
- function d3_lab_xyz(x) {
- return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;
- }
- function d3_xyz_lab(x) {
- return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;
- }
- function d3_xyz_rgb(r) {
- return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));
- }
- function d3_selection(groups) {
- d3_arraySubclass(groups, d3_selectionPrototype);
- return groups;
- }
- function d3_selection_selector(selector) {
- return function() {
- return d3_select(selector, this);
- };
- }
- function d3_selection_selectorAll(selector) {
- return function() {
- return d3_selectAll(selector, this);
- };
- }
- function d3_selection_attr(name, value) {
- function attrNull() {
- this.removeAttribute(name);
- }
- function attrNullNS() {
- this.removeAttributeNS(name.space, name.local);
- }
- function attrConstant() {
- this.setAttribute(name, value);
- }
- function attrConstantNS() {
- this.setAttributeNS(name.space, name.local, value);
- }
- function attrFunction() {
- var x = value.apply(this, arguments);
- if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);
- }
- function attrFunctionNS() {
- var x = value.apply(this, arguments);
- if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);
- }
- name = d3.ns.qualify(name);
- return value == null ? name.local ? attrNullNS : attrNull : typeof value === "function" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;
- }
- function d3_selection_classedRe(name) {
- return new RegExp("(?:^|\\s+)" + d3.requote(name) + "(?:\\s+|$)", "g");
- }
- function d3_selection_classed(name, value) {
- function classedConstant() {
- var i = -1;
- while (++i < n) name[i](this, value);
- }
- function classedFunction() {
- var i = -1, x = value.apply(this, arguments);
- while (++i < n) name[i](this, x);
- }
- name = name.trim().split(/\s+/).map(d3_selection_classedName);
- var n = name.length;
- return typeof value === "function" ? classedFunction : classedConstant;
- }
- function d3_selection_classedName(name) {
- var re = d3_selection_classedRe(name);
- return function(node, value) {
- if (c = node.classList) return value ? c.add(name) : c.remove(name);
- var c = node.className, cb = c.baseVal != null, cv = cb ? c.baseVal : c;
- if (value) {
- re.lastIndex = 0;
- if (!re.test(cv)) {
- cv = d3_collapse(cv + " " + name);
- if (cb) c.baseVal = cv; else node.className = cv;
- }
- } else if (cv) {
- cv = d3_collapse(cv.replace(re, " "));
- if (cb) c.baseVal = cv; else node.className = cv;
- }
- };
- }
- function d3_selection_style(name, value, priority) {
- function styleNull() {
- this.style.removeProperty(name);
- }
- function styleConstant() {
- this.style.setProperty(name, value, priority);
- }
- function styleFunction() {
- var x = value.apply(this, arguments);
- if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);
- }
- return value == null ? styleNull : typeof value === "function" ? styleFunction : styleConstant;
- }
- function d3_selection_property(name, value) {
- function propertyNull() {
- delete this[name];
- }
- function propertyConstant() {
- this[name] = value;
- }
- function propertyFunction() {
- var x = value.apply(this, arguments);
- if (x == null) delete this[name]; else this[name] = x;
- }
- return value == null ? propertyNull : typeof value === "function" ? propertyFunction : propertyConstant;
- }
- function d3_selection_dataNode(data) {
- return {
- __data__: data
- };
- }
- function d3_selection_filter(selector) {
- return function() {
- return d3_selectMatches(this, selector);
- };
- }
- function d3_selection_sortComparator(comparator) {
- if (!arguments.length) comparator = d3.ascending;
- return function(a, b) {
- return comparator(a && a.__data__, b && b.__data__);
- };
- }
- function d3_selection_on(type, listener, capture) {
- function onRemove() {
- var wrapper = this[name];
- if (wrapper) {
- this.removeEventListener(type, wrapper, wrapper.$);
- delete this[name];
- }
- }
- function onAdd() {
- function wrapper(e) {
- var o = d3.event;
- d3.event = e;
- args[0] = node.__data__;
- try {
- listener.apply(node, args);
- } finally {
- d3.event = o;
- }
- }
- var node = this, args = arguments;
- onRemove.call(this);
- this.addEventListener(type, this[name] = wrapper, wrapper.$ = capture);
- wrapper._ = listener;
- }
- var name = "__on" + type, i = type.indexOf(".");
- if (i > 0) type = type.substring(0, i);
- return listener ? onAdd : onRemove;
- }
- function d3_selection_each(groups, callback) {
- for (var j = 0, m = groups.length; j < m; j++) {
- for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {
- if (node = group[i]) callback(node, i, j);
- }
- }
- return groups;
- }
- function d3_selection_enter(selection) {
- d3_arraySubclass(selection, d3_selection_enterPrototype);
- return selection;
- }
- function d3_transition(groups, id, time) {
- d3_arraySubclass(groups, d3_transitionPrototype);
- var tweens = new d3_Map, event = d3.dispatch("start", "end"), ease = d3_transitionEase;
- groups.id = id;
- groups.time = time;
- groups.tween = function(name, tween) {
- if (arguments.length < 2) return tweens.get(name);
- if (tween == null) tweens.remove(name); else tweens.set(name, tween);
- return groups;
- };
- groups.ease = function(value) {
- if (!arguments.length) return ease;
- ease = typeof value === "function" ? value : d3.ease.apply(d3, arguments);
- return groups;
- };
- groups.each = function(type, listener) {
- if (arguments.length < 2) return d3_transition_each.call(groups, type);
- event.on(type, listener);
- return groups;
- };
- d3.timer(function(elapsed) {
- return d3_selection_each(groups, function(node, i, j) {
- function start(elapsed) {
- if (lock.active > id) return stop();
- lock.active = id;
- tweens.forEach(function(key, value) {
- if (value = value.call(node, d, i)) {
- tweened.push(value);
- }
- });
- event.start.call(node, d, i);
- if (!tick(elapsed)) d3.timer(tick, 0, time);
- return 1;
- }
- function tick(elapsed) {
- if (lock.active !== id) return stop();
- var t = (elapsed - delay) / duration, e = ease(t), n = tweened.length;
- while (n > 0) {
- tweened[--n].call(node, e);
- }
- if (t >= 1) {
- stop();
- d3_transitionId = id;
- event.end.call(node, d, i);
- d3_transitionId = 0;
- return 1;
- }
- }
- function stop() {
- if (!--lock.count) delete node.__transition__;
- return 1;
- }
- var tweened = [], delay = node.delay, duration = node.duration, lock = (node = node.node).__transition__ || (node.__transition__ = {
- active: 0,
- count: 0
- }), d = node.__data__;
- ++lock.count;
- delay <= elapsed ? start(elapsed) : d3.timer(start, delay, time);
- });
- }, 0, time);
- return groups;
- }
- function d3_transition_each(callback) {
- var id = d3_transitionId, ease = d3_transitionEase, delay = d3_transitionDelay, duration = d3_transitionDuration;
- d3_transitionId = this.id;
- d3_transitionEase = this.ease();
- d3_selection_each(this, function(node, i, j) {
- d3_transitionDelay = node.delay;
- d3_transitionDuration = node.duration;
- callback.call(node = node.node, node.__data__, i, j);
- });
- d3_transitionId = id;
- d3_transitionEase = ease;
- d3_transitionDelay = delay;
- d3_transitionDuration = duration;
- return this;
- }
- function d3_tweenNull(d, i, a) {
- return a != "" && d3_tweenRemove;
- }
- function d3_tweenByName(b, name) {
- return d3.tween(b, d3_interpolateByName(name));
- }
- function d3_timer_step() {
- var elapsed, now = Date.now(), t1 = d3_timer_queue;
- while (t1) {
- elapsed = now - t1.then;
- if (elapsed >= t1.delay) t1.flush = t1.callback(elapsed);
- t1 = t1.next;
- }
- var delay = d3_timer_flush() - now;
- if (delay > 24) {
- if (isFinite(delay)) {
- clearTimeout(d3_timer_timeout);
- d3_timer_timeout = setTimeout(d3_timer_step, delay);
- }
- d3_timer_interval = 0;
- } else {
- d3_timer_interval = 1;
- d3_timer_frame(d3_timer_step);
- }
- }
- function d3_timer_flush() {
- var t0 = null, t1 = d3_timer_queue, then = Infinity;
- while (t1) {
- if (t1.flush) {
- t1 = t0 ? t0.next = t1.next : d3_timer_queue = t1.next;
- } else {
- then = Math.min(then, t1.then + t1.delay);
- t1 = (t0 = t1).next;
- }
- }
- return then;
- }
- function d3_mousePoint(container, e) {
- var svg = container.ownerSVGElement || container;
- if (svg.createSVGPoint) {
- var point = svg.createSVGPoint();
- if (d3_mouse_bug44083 < 0 && (window.scrollX || window.scrollY)) {
- svg = d3.select(document.body).append("svg").style("position", "absolute").style("top", 0).style("left", 0);
- var ctm = svg[0][0].getScreenCTM();
- d3_mouse_bug44083 = !(ctm.f || ctm.e);
- svg.remove();
- }
- if (d3_mouse_bug44083) {
- point.x = e.pageX;
- point.y = e.pageY;
- } else {
- point.x = e.clientX;
- point.y = e.clientY;
- }
- point = point.matrixTransform(container.getScreenCTM().inverse());
- return [ point.x, point.y ];
- }
- var rect = container.getBoundingClientRect();
- return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];
- }
- function d3_noop() {}
- function d3_scaleExtent(domain) {
- var start = domain[0], stop = domain[domain.length - 1];
- return start < stop ? [ start, stop ] : [ stop, start ];
- }
- function d3_scaleRange(scale) {
- return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());
- }
- function d3_scale_nice(domain, nice) {
- var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;
- if (x1 < x0) {
- dx = i0, i0 = i1, i1 = dx;
- dx = x0, x0 = x1, x1 = dx;
- }
- if (nice = nice(x1 - x0)) {
- domain[i0] = nice.floor(x0);
- domain[i1] = nice.ceil(x1);
- }
- return domain;
- }
- function d3_scale_niceDefault() {
- return Math;
- }
- function d3_scale_linear(domain, range, interpolate, clamp) {
- function rescale() {
- var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;
- output = linear(domain, range, uninterpolate, interpolate);
- input = linear(range, domain, uninterpolate, d3.interpolate);
- return scale;
- }
- function scale(x) {
- return output(x);
- }
- var output, input;
- scale.invert = function(y) {
- return input(y);
- };
- scale.domain = function(x) {
- if (!arguments.length) return domain;
- domain = x.map(Number);
- return rescale();
- };
- scale.range = function(x) {
- if (!arguments.length) return range;
- range = x;
- return rescale();
- };
- scale.rangeRound = function(x) {
- return scale.range(x).interpolate(d3.interpolateRound);
- };
- scale.clamp = function(x) {
- if (!arguments.length) return clamp;
- clamp = x;
- return rescale();
- };
- scale.interpolate = function(x) {
- if (!arguments.length) return interpolate;
- interpolate = x;
- return rescale();
- };
- scale.ticks = function(m) {
- return d3_scale_linearTicks(domain, m);
- };
- scale.tickFormat = function(m) {
- return d3_scale_linearTickFormat(domain, m);
- };
- scale.nice = function() {
- d3_scale_nice(domain, d3_scale_linearNice);
- return rescale();
- };
- scale.copy = function() {
- return d3_scale_linear(domain, range, interpolate, clamp);
- };
- return rescale();
- }
- function d3_scale_linearRebind(scale, linear) {
- return d3.rebind(scale, linear, "range", "rangeRound", "interpolate", "clamp");
- }
- function d3_scale_linearNice(dx) {
- dx = Math.pow(10, Math.round(Math.log(dx) / Math.LN10) - 1);
- return dx && {
- floor: function(x) {
- return Math.floor(x / dx) * dx;
- },
- ceil: function(x) {
- return Math.ceil(x / dx) * dx;
- }
- };
- }
- function d3_scale_linearTickRange(domain, m) {
- var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;
- if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;
- extent[0] = Math.ceil(extent[0] / step) * step;
- extent[1] = Math.floor(extent[1] / step) * step + step * .5;
- extent[2] = step;
- return extent;
- }
- function d3_scale_linearTicks(domain, m) {
- return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));
- }
- function d3_scale_linearTickFormat(domain, m) {
- return d3.format(",." + Math.max(0, -Math.floor(Math.log(d3_scale_linearTickRange(domain, m)[2]) / Math.LN10 + .01)) + "f");
- }
- function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {
- var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);
- return function(x) {
- return i(u(x));
- };
- }
- function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {
- var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;
- if (domain[k] < domain[0]) {
- domain = domain.slice().reverse();
- range = range.slice().reverse();
- }
- while (++j <= k) {
- u.push(uninterpolate(domain[j - 1], domain[j]));
- i.push(interpolate(range[j - 1], range[j]));
- }
- return function(x) {
- var j = d3.bisect(domain, x, 1, k) - 1;
- return i[j](u[j](x));
- };
- }
- function d3_scale_log(linear, log) {
- function scale(x) {
- return linear(log(x));
- }
- var pow = log.pow;
- scale.invert = function(x) {
- return pow(linear.invert(x));
- };
- scale.domain = function(x) {
- if (!arguments.length) return linear.domain().map(pow);
- log = x[0] < 0 ? d3_scale_logn : d3_scale_logp;
- pow = log.pow;
- linear.domain(x.map(log));
- return scale;
- };
- scale.nice = function() {
- linear.domain(d3_scale_nice(linear.domain(), d3_scale_niceDefault));
- return scale;
- };
- scale.ticks = function() {
- var extent = d3_scaleExtent(linear.domain()), ticks = [];
- if (extent.every(isFinite)) {
- var i = Math.floor(extent[0]), j = Math.ceil(extent[1]), u = pow(extent[0]), v = pow(extent[1]);
- if (log === d3_scale_logn) {
- ticks.push(pow(i));
- for (; i++ < j; ) for (var k = 9; k > 0; k--) ticks.push(pow(i) * k);
- } else {
- for (; i < j; i++) for (var k = 1; k < 10; k++) ticks.push(pow(i) * k);
- ticks.push(pow(i));
- }
- for (i = 0; ticks[i] < u; i++) {}
- for (j = ticks.length; ticks[j - 1] > v; j--) {}
- ticks = ticks.slice(i, j);
- }
- return ticks;
- };
- scale.tickFormat = function(n, format) {
- if (arguments.length < 2) format = d3_scale_logFormat;
- if (arguments.length < 1) return format;
- var k = Math.max(.1, n / scale.ticks().length), f = log === d3_scale_logn ? (e = -1e-12, Math.floor) : (e = 1e-12, Math.ceil), e;
- return function(d) {
- return d / pow(f(log(d) + e)) <= k ? format(d) : "";
- };
- };
- scale.copy = function() {
- return d3_scale_log(linear.copy(), log);
- };
- return d3_scale_linearRebind(scale, linear);
- }
- function d3_scale_logp(x) {
- return Math.log(x < 0 ? 0 : x) / Math.LN10;
- }
- function d3_scale_logn(x) {
- return -Math.log(x > 0 ? 0 : -x) / Math.LN10;
- }
- function d3_scale_pow(linear, exponent) {
- function scale(x) {
- return linear(powp(x));
- }
- var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);
- scale.invert = function(x) {
- return powb(linear.invert(x));
- };
- scale.domain = function(x) {
- if (!arguments.length) return linear.domain().map(powb);
- linear.domain(x.map(powp));
- return scale;
- };
- scale.ticks = function(m) {
- return d3_scale_linearTicks(scale.domain(), m);
- };
- scale.tickFormat = function(m) {
- return d3_scale_linearTickFormat(scale.domain(), m);
- };
- scale.nice = function() {
- return scale.domain(d3_scale_nice(scale.domain(), d3_scale_linearNice));
- };
- scale.exponent = function(x) {
- if (!arguments.length) return exponent;
- var domain = scale.domain();
- powp = d3_scale_powPow(exponent = x);
- powb = d3_scale_powPow(1 / exponent);
- return scale.domain(domain);
- };
- scale.copy = function() {
- return d3_scale_pow(linear.copy(), exponent);
- };
- return d3_scale_linearRebind(scale, linear);
- }
- function d3_scale_powPow(e) {
- return function(x) {
- return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);
- };
- }
- function d3_scale_ordinal(domain, ranger) {
- function scale(x) {
- return range[((index.get(x) || index.set(x, domain.push(x))) - 1) % range.length];
- }
- function steps(start, step) {
- return d3.range(domain.length).map(function(i) {
- return start + step * i;
- });
- }
- var index, range, rangeBand;
- scale.domain = function(x) {
- if (!arguments.length) return domain;
- domain = [];
- index = new d3_Map;
- var i = -1, n = x.length, xi;
- while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));
- return scale[ranger.t].apply(scale, ranger.a);
- };
- scale.range = function(x) {
- if (!arguments.length) return range;
- range = x;
- rangeBand = 0;
- ranger = {
- t: "range",
- a: arguments
- };
- return scale;
- };
- scale.rangePoints = function(x, padding) {
- if (arguments.length < 2) padding = 0;
- var start = x[0], stop = x[1], step = (stop - start) / (Math.max(1, domain.length - 1) + padding);
- range = steps(domain.length < 2 ? (start + stop) / 2 : start + step * padding / 2, step);
- rangeBand = 0;
- ranger = {
- t: "rangePoints",
- a: arguments
- };
- return scale;
- };
- scale.rangeBands = function(x, padding, outerPadding) {
- if (arguments.length < 2) padding = 0;
- if (arguments.length < 3) outerPadding = padding;
- var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);
- range = steps(start + step * outerPadding, step);
- if (reverse) range.reverse();
- rangeBand = step * (1 - padding);
- ranger = {
- t: "rangeBands",
- a: arguments
- };
- return scale;
- };
- scale.rangeRoundBands = function(x, padding, outerPadding) {
- if (arguments.length < 2) padding = 0;
- if (arguments.length < 3) outerPadding = padding;
- var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding)), error = stop - start - (domain.length - padding) * step;
- range = steps(start + Math.round(error / 2), step);
- if (reverse) range.reverse();
- rangeBand = Math.round(step * (1 - padding));
- ranger = {
- t: "rangeRoundBands",
- a: arguments
- };
- return scale;
- };
- scale.rangeBand = function() {
- return rangeBand;
- };
- scale.rangeExtent = function() {
- return d3_scaleExtent(ranger.a[0]);
- };
- scale.copy = function() {
- return d3_scale_ordinal(domain, ranger);
- };
- return scale.domain(domain);
- }
- function d3_scale_quantile(domain, range) {
- function rescale() {
- var k = 0, n = domain.length, q = range.length;
- thresholds = [];
- while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);
- return scale;
- }
- function scale(x) {
- if (isNaN(x = +x)) return NaN;
- return range[d3.bisect(thresholds, x)];
- }
- var thresholds;
- scale.domain = function(x) {
- if (!arguments.length) return domain;
- domain = x.filter(function(d) {
- return !isNaN(d);
- }).sort(d3.ascending);
- return rescale();
- };
- scale.range = function(x) {
- if (!arguments.length) return range;
- range = x;
- return rescale();
- };
- scale.quantiles = function() {
- return thresholds;
- };
- scale.copy = function() {
- return d3_scale_quantile(domain, range);
- };
- return rescale();
- }
- function d3_scale_quantize(x0, x1, range) {
- function scale(x) {
- return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];
- }
- function rescale() {
- kx = range.length / (x1 - x0);
- i = range.length - 1;
- return scale;
- }
- var kx, i;
- scale.domain = function(x) {
- if (!arguments.length) return [ x0, x1 ];
- x0 = +x[0];
- x1 = +x[x.length - 1];
- return rescale();
- };
- scale.range = function(x) {
- if (!arguments.length) return range;
- range = x;
- return rescale();
- };
- scale.copy = function() {
- return d3_scale_quantize(x0, x1, range);
- };
- return rescale();
- }
- function d3_scale_threshold(domain, range) {
- function scale(x) {
- return range[d3.bisect(domain, x)];
- }
- scale.domain = function(_) {
- if (!arguments.length) return domain;
- domain = _;
- return scale;
- };
- scale.range = function(_) {
- if (!arguments.length) return range;
- range = _;
- return scale;
- };
- scale.copy = function() {
- return d3_scale_threshold(domain, range);
- };
- return scale;
- }
- function d3_scale_identity(domain) {
- function identity(x) {
- return +x;
- }
- identity.invert = identity;
- identity.domain = identity.range = function(x) {
- if (!arguments.length) return domain;
- domain = x.map(identity);
- return identity;
- };
- identity.ticks = function(m) {
- return d3_scale_linearTicks(domain, m);
- };
- identity.tickFormat = function(m) {
- return d3_scale_linearTickFormat(domain, m);
- };
- identity.copy = function() {
- return d3_scale_identity(domain);
- };
- return identity;
- }
- function d3_svg_arcInnerRadius(d) {
- return d.innerRadius;
- }
- function d3_svg_arcOuterRadius(d) {
- return d.outerRadius;
- }
- function d3_svg_arcStartAngle(d) {
- return d.startAngle;
- }
- function d3_svg_arcEndAngle(d) {
- return d.endAngle;
- }
- function d3_svg_line(projection) {
- function line(data) {
- function segment() {
- segments.push("M", interpolate(projection(points), tension));
- }
- var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);
- while (++i < n) {
- if (defined.call(this, d = data[i], i)) {
- points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]);
- } else if (points.length) {
- segment();
- points = [];
- }
- }
- if (points.length) segment();
- return segments.length ? segments.join("") : null;
- }
- var x = d3_svg_lineX, y = d3_svg_lineY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;
- line.x = function(_) {
- if (!arguments.length) return x;
- x = _;
- return line;
- };
- line.y = function(_) {
- if (!arguments.length) return y;
- y = _;
- return line;
- };
- line.defined = function(_) {
- if (!arguments.length) return defined;
- defined = _;
- return line;
- };
- line.interpolate = function(_) {
- if (!arguments.length) return interpolateKey;
- if (typeof _ === "function") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;
- return line;
- };
- line.tension = function(_) {
- if (!arguments.length) return tension;
- tension = _;
- return line;
- };
- return line;
- }
- function d3_svg_lineX(d) {
- return d[0];
- }
- function d3_svg_lineY(d) {
- return d[1];
- }
- function d3_svg_lineLinear(points) {
- return points.join("L");
- }
- function d3_svg_lineLinearClosed(points) {
- return d3_svg_lineLinear(points) + "Z";
- }
- function d3_svg_lineStepBefore(points) {
- var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ];
- while (++i < n) path.push("V", (p = points[i])[1], "H", p[0]);
- return path.join("");
- }
- function d3_svg_lineStepAfter(points) {
- var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ];
- while (++i < n) path.push("H", (p = points[i])[0], "V", p[1]);
- return path.join("");
- }
- function d3_svg_lineCardinalOpen(points, tension) {
- return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, points.length - 1), d3_svg_lineCardinalTangents(points, tension));
- }
- function d3_svg_lineCardinalClosed(points, tension) {
- return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));
- }
- function d3_svg_lineCardinal(points, tension, closed) {
- return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));
- }
- function d3_svg_lineHermite(points, tangents) {
- if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {
- return d3_svg_lineLinear(points);
- }
- var quad = points.length != tangents.length, path = "", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;
- if (quad) {
- path += "Q" + (p[0] - t0[0] * 2 / 3) + "," + (p[1] - t0[1] * 2 / 3) + "," + p[0] + "," + p[1];
- p0 = points[1];
- pi = 2;
- }
- if (tangents.length > 1) {
- t = tangents[1];
- p = points[pi];
- pi++;
- path += "C" + (p0[0] + t0[0]) + "," + (p0[1] + t0[1]) + "," + (p[0] - t[0]) + "," + (p[1] - t[1]) + "," + p[0] + "," + p[1];
- for (var i = 2; i < tangents.length; i++, pi++) {
- p = points[pi];
- t = tangents[i];
- path += "S" + (p[0] - t[0]) + "," + (p[1] - t[1]) + "," + p[0] + "," + p[1];
- }
- }
- if (quad) {
- var lp = points[pi];
- path += "Q" + (p[0] + t[0] * 2 / 3) + "," + (p[1] + t[1] * 2 / 3) + "," + lp[0] + "," + lp[1];
- }
- return path;
- }
- function d3_svg_lineCardinalTangents(points, tension) {
- var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;
- while (++i < n) {
- p0 = p1;
- p1 = p2;
- p2 = points[i];
- tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]);
- }
- return tangents;
- }
- function d3_svg_lineBasis(points) {
- if (points.length < 3) return d3_svg_lineLinear(points);
- var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, ",", y0 ];
- d3_svg_lineBasisBezier(path, px, py);
- while (++i < n) {
- pi = points[i];
- px.shift();
- px.push(pi[0]);
- py.shift();
- py.push(pi[1]);
- d3_svg_lineBasisBezier(path, px, py);
- }
- i = -1;
- while (++i < 2) {
- px.shift();
- px.push(pi[0]);
- py.shift();
- py.push(pi[1]);
- d3_svg_lineBasisBezier(path, px, py);
- }
- return path.join("");
- }
- function d3_svg_lineBasisOpen(points) {
- if (points.length < 4) return d3_svg_lineLinear(points);
- var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ];
- while (++i < 3) {
- pi = points[i];
- px.push(pi[0]);
- py.push(pi[1]);
- }
- path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + "," + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));
- --i;
- while (++i < n) {
- pi = points[i];
- px.shift();
- px.push(pi[0]);
- py.shift();
- py.push(pi[1]);
- d3_svg_lineBasisBezier(path, px, py);
- }
- return path.join("");
- }
- function d3_svg_lineBasisClosed(points) {
- var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];
- while (++i < 4) {
- pi = points[i % n];
- px.push(pi[0]);
- py.push(pi[1]);
- }
- path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];
- --i;
- while (++i < m) {
- pi = points[i % n];
- px.shift();
- px.push(pi[0]);
- py.shift();
- py.push(pi[1]);
- d3_svg_lineBasisBezier(path, px, py);
- }
- return path.join("");
- }
- function d3_svg_lineBundle(points, tension) {
- var n = points.length - 1;
- if (n) {
- var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;
- while (++i <= n) {
- p = points[i];
- t = i / n;
- p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);
- p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);
- }
- }
- return d3_svg_lineBasis(points);
- }
- function d3_svg_lineDot4(a, b) {
- return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];
- }
- function d3_svg_lineBasisBezier(path, x, y) {
- path.push("C", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));
- }
- function d3_svg_lineSlope(p0, p1) {
- return (p1[1] - p0[1]) / (p1[0] - p0[0]);
- }
- function d3_svg_lineFiniteDifferences(points) {
- var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);
- while (++i < j) {
- m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;
- }
- m[i] = d;
- return m;
- }
- function d3_svg_lineMonotoneTangents(points) {
- var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;
- while (++i < j) {
- d = d3_svg_lineSlope(points[i], points[i + 1]);
- if (Math.abs(d) < 1e-6) {
- m[i] = m[i + 1] = 0;
- } else {
- a = m[i] / d;
- b = m[i + 1] / d;
- s = a * a + b * b;
- if (s > 9) {
- s = d * 3 / Math.sqrt(s);
- m[i] = s * a;
- m[i + 1] = s * b;
- }
- }
- }
- i = -1;
- while (++i <= j) {
- s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));
- tangents.push([ s || 0, m[i] * s || 0 ]);
- }
- return tangents;
- }
- function d3_svg_lineMonotone(points) {
- return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));
- }
- function d3_svg_lineRadial(points) {
- var point, i = -1, n = points.length, r, a;
- while (++i < n) {
- point = points[i];
- r = point[0];
- a = point[1] + d3_svg_arcOffset;
- point[0] = r * Math.cos(a);
- point[1] = r * Math.sin(a);
- }
- return points;
- }
- function d3_svg_area(projection) {
- function area(data) {
- function segment() {
- segments.push("M", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), "Z");
- }
- var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {
- return x;
- } : d3_functor(x1), fy1 = y0 === y1 ? function() {
- return y;
- } : d3_functor(y1), x, y;
- while (++i < n) {
- if (defined.call(this, d = data[i], i)) {
- points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]);
- points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]);
- } else if (points0.length) {
- segment();
- points0 = [];
- points1 = [];
- }
- }
- if (points0.length) segment();
- return segments.length ? segments.join("") : null;
- }
- var x0 = d3_svg_lineX, x1 = d3_svg_lineX, y0 = 0, y1 = d3_svg_lineY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = "L", tension = .7;
- area.x = function(_) {
- if (!arguments.length) return x1;
- x0 = x1 = _;
- return area;
- };
- area.x0 = function(_) {
- if (!arguments.length) return x0;
- x0 = _;
- return area;
- };
- area.x1 = function(_) {
- if (!arguments.length) return x1;
- x1 = _;
- return area;
- };
- area.y = function(_) {
- if (!arguments.length) return y1;
- y0 = y1 = _;
- return area;
- };
- area.y0 = function(_) {
- if (!arguments.length) return y0;
- y0 = _;
- return area;
- };
- area.y1 = function(_) {
- if (!arguments.length) return y1;
- y1 = _;
- return area;
- };
- area.defined = function(_) {
- if (!arguments.length) return defined;
- defined = _;
- return area;
- };
- area.interpolate = function(_) {
- if (!arguments.length) return interpolateKey;
- if (typeof _ === "function") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;
- interpolateReverse = interpolate.reverse || interpolate;
- L = interpolate.closed ? "M" : "L";
- return area;
- };
- area.tension = function(_) {
- if (!arguments.length) return tension;
- tension = _;
- return area;
- };
- return area;
- }
- function d3_svg_chordSource(d) {
- return d.source;
- }
- function d3_svg_chordTarget(d) {
- return d.target;
- }
- function d3_svg_chordRadius(d) {
- return d.radius;
- }
- function d3_svg_chordStartAngle(d) {
- return d.startAngle;
- }
- function d3_svg_chordEndAngle(d) {
- return d.endAngle;
- }
- function d3_svg_diagonalProjection(d) {
- return [ d.x, d.y ];
- }
- function d3_svg_diagonalRadialProjection(projection) {
- return function() {
- var d = projection.apply(this, arguments), r = d[0], a = d[1] + d3_svg_arcOffset;
- return [ r * Math.cos(a), r * Math.sin(a) ];
- };
- }
- function d3_svg_symbolSize() {
- return 64;
- }
- function d3_svg_symbolType() {
- return "circle";
- }
- function d3_svg_symbolCircle(size) {
- var r = Math.sqrt(size / Math.PI);
- return "M0," + r + "A" + r + "," + r + " 0 1,1 0," + -r + "A" + r + "," + r + " 0 1,1 0," + r + "Z";
- }
- function d3_svg_axisX(selection, x) {
- selection.attr("transform", function(d) {
- return "translate(" + x(d) + ",0)";
- });
- }
- function d3_svg_axisY(selection, y) {
- selection.attr("transform", function(d) {
- return "translate(0," + y(d) + ")";
- });
- }
- function d3_svg_axisSubdivide(scale, ticks, m) {
- subticks = [];
- if (m && ticks.length > 1) {
- var extent = d3_scaleExtent(scale.domain()), subticks, i = -1, n = ticks.length, d = (ticks[1] - ticks[0]) / ++m, j, v;
- while (++i < n) {
- for (j = m; --j > 0; ) {
- if ((v = +ticks[i] - j * d) >= extent[0]) {
- subticks.push(v);
- }
- }
- }
- for (--i, j = 0; ++j < m && (v = +ticks[i] + j * d) < extent[1]; ) {
- subticks.push(v);
- }
- }
- return subticks;
- }
- function d3_behavior_zoomDelta() {
- if (!d3_behavior_zoomDiv) {
- d3_behavior_zoomDiv = d3.select("body").append("div").style("visibility", "hidden").style("top", 0).style("height", 0).style("width", 0).style("overflow-y", "scroll").append("div").style("height", "2000px").node().parentNode;
- }
- var e = d3.event, delta;
- try {
- d3_behavior_zoomDiv.scrollTop = 1e3;
- d3_behavior_zoomDiv.dispatchEvent(e);
- delta = 1e3 - d3_behavior_zoomDiv.scrollTop;
- } catch (error) {
- delta = e.wheelDelta || -e.detail * 5;
- }
- return delta;
- }
- function d3_layout_bundlePath(link) {
- var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ];
- while (start !== lca) {
- start = start.parent;
- points.push(start);
- }
- var k = points.length;
- while (end !== lca) {
- points.splice(k, 0, end);
- end = end.parent;
- }
- return points;
- }
- function d3_layout_bundleAncestors(node) {
- var ancestors = [], parent = node.parent;
- while (parent != null) {
- ancestors.push(node);
- node = parent;
- parent = parent.parent;
- }
- ancestors.push(node);
- return ancestors;
- }
- function d3_layout_bundleLeastCommonAncestor(a, b) {
- if (a === b) return a;
- var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;
- while (aNode === bNode) {
- sharedNode = aNode;
- aNode = aNodes.pop();
- bNode = bNodes.pop();
- }
- return sharedNode;
- }
- function d3_layout_forceDragstart(d) {
- d.fixed |= 2;
- }
- function d3_layout_forceDragend(d) {
- d.fixed &= 1;
- }
- function d3_layout_forceMouseover(d) {
- d.fixed |= 4;
- }
- function d3_layout_forceMouseout(d) {
- d.fixed &= 3;
- }
- function d3_layout_forceAccumulate(quad, alpha, charges) {
- var cx = 0, cy = 0;
- quad.charge = 0;
- if (!quad.leaf) {
- var nodes = quad.nodes, n = nodes.length, i = -1, c;
- while (++i < n) {
- c = nodes[i];
- if (c == null) continue;
- d3_layout_forceAccumulate(c, alpha, charges);
- quad.charge += c.charge;
- cx += c.charge * c.cx;
- cy += c.charge * c.cy;
- }
- }
- if (quad.point) {
- if (!quad.leaf) {
- quad.point.x += Math.random() - .5;
- quad.point.y += Math.random() - .5;
- }
- var k = alpha * charges[quad.point.index];
- quad.charge += quad.pointCharge = k;
- cx += k * quad.point.x;
- cy += k * quad.point.y;
- }
- quad.cx = cx / quad.charge;
- quad.cy = cy / quad.charge;
- }
- function d3_layout_forceLinkDistance(link) {
- return 20;
- }
- function d3_layout_forceLinkStrength(link) {
- return 1;
- }
- function d3_layout_stackX(d) {
- return d.x;
- }
- function d3_layout_stackY(d) {
- return d.y;
- }
- function d3_layout_stackOut(d, y0, y) {
- d.y0 = y0;
- d.y = y;
- }
- function d3_layout_stackOrderDefault(data) {
- return d3.range(data.length);
- }
- function d3_layout_stackOffsetZero(data) {
- var j = -1, m = data[0].length, y0 = [];
- while (++j < m) y0[j] = 0;
- return y0;
- }
- function d3_layout_stackMaxIndex(array) {
- var i = 1, j = 0, v = array[0][1], k, n = array.length;
- for (; i < n; ++i) {
- if ((k = array[i][1]) > v) {
- j = i;
- v = k;
- }
- }
- return j;
- }
- function d3_layout_stackReduceSum(d) {
- return d.reduce(d3_layout_stackSum, 0);
- }
- function d3_layout_stackSum(p, d) {
- return p + d[1];
- }
- function d3_layout_histogramBinSturges(range, values) {
- return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));
- }
- function d3_layout_histogramBinFixed(range, n) {
- var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];
- while (++x <= n) f[x] = m * x + b;
- return f;
- }
- function d3_layout_histogramRange(values) {
- return [ d3.min(values), d3.max(values) ];
- }
- function d3_layout_hierarchyRebind(object, hierarchy) {
- d3.rebind(object, hierarchy, "sort", "children", "value");
- object.links = d3_layout_hierarchyLinks;
- object.nodes = function(d) {
- d3_layout_hierarchyInline = true;
- return (object.nodes = object)(d);
- };
- return object;
- }
- function d3_layout_hierarchyChildren(d) {
- return d.children;
- }
- function d3_layout_hierarchyValue(d) {
- return d.value;
- }
- function d3_layout_hierarchySort(a, b) {
- return b.value - a.value;
- }
- function d3_layout_hierarchyLinks(nodes) {
- return d3.merge(nodes.map(function(parent) {
- return (parent.children || []).map(function(child) {
- return {
- source: parent,
- target: child
- };
- });
- }));
- }
- function d3_layout_packSort(a, b) {
- return a.value - b.value;
- }
- function d3_layout_packInsert(a, b) {
- var c = a._pack_next;
- a._pack_next = b;
- b._pack_prev = a;
- b._pack_next = c;
- c._pack_prev = b;
- }
- function d3_layout_packSplice(a, b) {
- a._pack_next = b;
- b._pack_prev = a;
- }
- function d3_layout_packIntersects(a, b) {
- var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;
- return dr * dr - dx * dx - dy * dy > .001;
- }
- function d3_layout_packSiblings(node) {
- function bound(node) {
- xMin = Math.min(node.x - node.r, xMin);
- xMax = Math.max(node.x + node.r, xMax);
- yMin = Math.min(node.y - node.r, yMin);
- yMax = Math.max(node.y + node.r, yMax);
- }
- if (!(nodes = node.children) || !(n = nodes.length)) return;
- var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;
- nodes.forEach(d3_layout_packLink);
- a = nodes[0];
- a.x = -a.r;
- a.y = 0;
- bound(a);
- if (n > 1) {
- b = nodes[1];
- b.x = b.r;
- b.y = 0;
- bound(b);
- if (n > 2) {
- c = nodes[2];
- d3_layout_packPlace(a, b, c);
- bound(c);
- d3_layout_packInsert(a, c);
- a._pack_prev = c;
- d3_layout_packInsert(c, b);
- b = a._pack_next;
- for (i = 3; i < n; i++) {
- d3_layout_packPlace(a, b, c = nodes[i]);
- var isect = 0, s1 = 1, s2 = 1;
- for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {
- if (d3_layout_packIntersects(j, c)) {
- isect = 1;
- break;
- }
- }
- if (isect == 1) {
- for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {
- if (d3_layout_packIntersects(k, c)) {
- break;
- }
- }
- }
- if (isect) {
- if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b);
- i--;
- } else {
- d3_layout_packInsert(a, c);
- b = c;
- bound(c);
- }
- }
- }
- }
- var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;
- for (i = 0; i < n; i++) {
- c = nodes[i];
- c.x -= cx;
- c.y -= cy;
- cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));
- }
- node.r = cr;
- nodes.forEach(d3_layout_packUnlink);
- }
- function d3_layout_packLink(node) {
- node._pack_next = node._pack_prev = node;
- }
- function d3_layout_packUnlink(node) {
- delete node._pack_next;
- delete node._pack_prev;
- }
- function d3_layout_packTransform(node, x, y, k) {
- var children = node.children;
- node.x = x += k * node.x;
- node.y = y += k * node.y;
- node.r *= k;
- if (children) {
- var i = -1, n = children.length;
- while (++i < n) d3_layout_packTransform(children[i], x, y, k);
- }
- }
- function d3_layout_packPlace(a, b, c) {
- var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;
- if (db && (dx || dy)) {
- var da = b.r + c.r, dc = dx * dx + dy * dy;
- da *= da;
- db *= db;
- var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);
- c.x = a.x + x * dx + y * dy;
- c.y = a.y + x * dy - y * dx;
- } else {
- c.x = a.x + db;
- c.y = a.y;
- }
- }
- function d3_layout_clusterY(children) {
- return 1 + d3.max(children, function(child) {
- return child.y;
- });
- }
- function d3_layout_clusterX(children) {
- return children.reduce(function(x, child) {
- return x + child.x;
- }, 0) / children.length;
- }
- function d3_layout_clusterLeft(node) {
- var children = node.children;
- return children && children.length ? d3_layout_clusterLeft(children[0]) : node;
- }
- function d3_layout_clusterRight(node) {
- var children = node.children, n;
- return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;
- }
- function d3_layout_treeSeparation(a, b) {
- return a.parent == b.parent ? 1 : 2;
- }
- function d3_layout_treeLeft(node) {
- var children = node.children;
- return children && children.length ? children[0] : node._tree.thread;
- }
- function d3_layout_treeRight(node) {
- var children = node.children, n;
- return children && (n = children.length) ? children[n - 1] : node._tree.thread;
- }
- function d3_layout_treeSearch(node, compare) {
- var children = node.children;
- if (children && (n = children.length)) {
- var child, n, i = -1;
- while (++i < n) {
- if (compare(child = d3_layout_treeSearch(children[i], compare), node) > 0) {
- node = child;
- }
- }
- }
- return node;
- }
- function d3_layout_treeRightmost(a, b) {
- return a.x - b.x;
- }
- function d3_layout_treeLeftmost(a, b) {
- return b.x - a.x;
- }
- function d3_layout_treeDeepest(a, b) {
- return a.depth - b.depth;
- }
- function d3_layout_treeVisitAfter(node, callback) {
- function visit(node, previousSibling) {
- var children = node.children;
- if (children && (n = children.length)) {
- var child, previousChild = null, i = -1, n;
- while (++i < n) {
- child = children[i];
- visit(child, previousChild);
- previousChild = child;
- }
- }
- callback(node, previousSibling);
- }
- visit(node, null);
- }
- function d3_layout_treeShift(node) {
- var shift = 0, change = 0, children = node.children, i = children.length, child;
- while (--i >= 0) {
- child = children[i]._tree;
- child.prelim += shift;
- child.mod += shift;
- shift += child.shift + (change += child.change);
- }
- }
- function d3_layout_treeMove(ancestor, node, shift) {
- ancestor = ancestor._tree;
- node = node._tree;
- var change = shift / (node.number - ancestor.number);
- ancestor.change += change;
- node.change -= change;
- node.shift += shift;
- node.prelim += shift;
- node.mod += shift;
- }
- function d3_layout_treeAncestor(vim, node, ancestor) {
- return vim._tree.ancestor.parent == node.parent ? vim._tree.ancestor : ancestor;
- }
- function d3_layout_treemapPadNull(node) {
- return {
- x: node.x,
- y: node.y,
- dx: node.dx,
- dy: node.dy
- };
- }
- function d3_layout_treemapPad(node, padding) {
- var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2];
- if (dx < 0) {
- x += dx / 2;
- dx = 0;
- }
- if (dy < 0) {
- y += dy / 2;
- dy = 0;
- }
- return {
- x: x,
- y: y,
- dx: dx,
- dy: dy
- };
- }
- function d3_dsv(delimiter, mimeType) {
- function dsv(url, callback) {
- d3.text(url, mimeType, function(text) {
- callback(text && dsv.parse(text));
- });
- }
- function formatRow(row) {
- return row.map(formatValue).join(delimiter);
- }
- function formatValue(text) {
- return reFormat.test(text) ? '"' + text.replace(/\"/g, '""') + '"' : text;
- }
- var reParse = new RegExp("\r\n|[" + delimiter + "\r\n]", "g"), reFormat = new RegExp('["' + delimiter + "\n]"), delimiterCode = delimiter.charCodeAt(0);
- dsv.parse = function(text) {
- var header;
- return dsv.parseRows(text, function(row, i) {
- if (i) {
- var o = {}, j = -1, m = header.length;
- while (++j < m) o[header[j]] = row[j];
- return o;
- } else {
- header = row;
- return null;
- }
- });
- };
- dsv.parseRows = function(text, f) {
- function token() {
- if (reParse.lastIndex >= text.length) return EOF;
- if (eol) {
- eol = false;
- return EOL;
- }
- var j = reParse.lastIndex;
- if (text.charCodeAt(j) === 34) {
- var i = j;
- while (i++ < text.length) {
- if (text.charCodeAt(i) === 34) {
- if (text.charCodeAt(i + 1) !== 34) break;
- i++;
- }
- }
- reParse.lastIndex = i + 2;
- var c = text.charCodeAt(i + 1);
- if (c === 13) {
- eol = true;
- if (text.charCodeAt(i + 2) === 10) reParse.lastIndex++;
- } else if (c === 10) {
- eol = true;
- }
- return text.substring(j + 1, i).replace(/""/g, '"');
- }
- var m = reParse.exec(text);
- if (m) {
- eol = m[0].charCodeAt(0) !== delimiterCode;
- return text.substring(j, m.index);
- }
- reParse.lastIndex = text.length;
- return text.substring(j);
- }
- var EOL = {}, EOF = {}, rows = [], n = 0, t, eol;
- reParse.lastIndex = 0;
- while ((t = token()) !== EOF) {
- var a = [];
- while (t !== EOL && t !== EOF) {
- a.push(t);
- t = token();
- }
- if (f && !(a = f(a, n++))) continue;
- rows.push(a);
- }
- return rows;
- };
- dsv.format = function(rows) {
- return rows.map(formatRow).join("\n");
- };
- return dsv;
- }
- function d3_geo_type(types, defaultValue) {
- return function(object) {
- return object && types.hasOwnProperty(object.type) ? types[object.type](object) : defaultValue;
- };
- }
- function d3_path_circle(radius) {
- return "m0," + radius + "a" + radius + "," + radius + " 0 1,1 0," + -2 * radius + "a" + radius + "," + radius + " 0 1,1 0," + +2 * radius + "z";
- }
- function d3_geo_bounds(o, f) {
- if (d3_geo_boundsTypes.hasOwnProperty(o.type)) d3_geo_boundsTypes[o.type](o, f);
- }
- function d3_geo_boundsFeature(o, f) {
- d3_geo_bounds(o.geometry, f);
- }
- function d3_geo_boundsFeatureCollection(o, f) {
- for (var a = o.features, i = 0, n = a.length; i < n; i++) {
- d3_geo_bounds(a[i].geometry, f);
- }
- }
- function d3_geo_boundsGeometryCollection(o, f) {
- for (var a = o.geometries, i = 0, n = a.length; i < n; i++) {
- d3_geo_bounds(a[i], f);
- }
- }
- function d3_geo_boundsLineString(o, f) {
- for (var a = o.coordinates, i = 0, n = a.length; i < n; i++) {
- f.apply(null, a[i]);
- }
- }
- function d3_geo_boundsMultiLineString(o, f) {
- for (var a = o.coordinates, i = 0, n = a.length; i < n; i++) {
- for (var b = a[i], j = 0, m = b.length; j < m; j++) {
- f.apply(null, b[j]);
- }
- }
- }
- function d3_geo_boundsMultiPolygon(o, f) {
- for (var a = o.coordinates, i = 0, n = a.length; i < n; i++) {
- for (var b = a[i][0], j = 0, m = b.length; j < m; j++) {
- f.apply(null, b[j]);
- }
- }
- }
- function d3_geo_boundsPoint(o, f) {
- f.apply(null, o.coordinates);
- }
- function d3_geo_boundsPolygon(o, f) {
- for (var a = o.coordinates[0], i = 0, n = a.length; i < n; i++) {
- f.apply(null, a[i]);
- }
- }
- function d3_geo_greatArcSource(d) {
- return d.source;
- }
- function d3_geo_greatArcTarget(d) {
- return d.target;
- }
- function d3_geo_greatArcInterpolator() {
- function interpolate(t) {
- var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1;
- return [ Math.atan2(y, x) / d3_geo_radians, Math.atan2(z, Math.sqrt(x * x + y * y)) / d3_geo_radians ];
- }
- var x0, y0, cy0, sy0, kx0, ky0, x1, y1, cy1, sy1, kx1, ky1, d, k;
- interpolate.distance = function() {
- if (d == null) k = 1 / Math.sin(d = Math.acos(Math.max(-1, Math.min(1, sy0 * sy1 + cy0 * cy1 * Math.cos(x1 - x0)))));
- return d;
- };
- interpolate.source = function(_) {
- var cx0 = Math.cos(x0 = _[0] * d3_geo_radians), sx0 = Math.sin(x0);
- cy0 = Math.cos(y0 = _[1] * d3_geo_radians);
- sy0 = Math.sin(y0);
- kx0 = cy0 * cx0;
- ky0 = cy0 * sx0;
- d = null;
- return interpolate;
- };
- interpolate.target = function(_) {
- var cx1 = Math.cos(x1 = _[0] * d3_geo_radians), sx1 = Math.sin(x1);
- cy1 = Math.cos(y1 = _[1] * d3_geo_radians);
- sy1 = Math.sin(y1);
- kx1 = cy1 * cx1;
- ky1 = cy1 * sx1;
- d = null;
- return interpolate;
- };
- return interpolate;
- }
- function d3_geo_greatArcInterpolate(a, b) {
- var i = d3_geo_greatArcInterpolator().source(a).target(b);
- i.distance();
- return i;
- }
- function d3_geom_contourStart(grid) {
- var x = 0, y = 0;
- while (true) {
- if (grid(x, y)) {
- return [ x, y ];
- }
- if (x === 0) {
- x = y + 1;
- y = 0;
- } else {
- x = x - 1;
- y = y + 1;
- }
- }
- }
- function d3_geom_hullCCW(i1, i2, i3, v) {
- var t, a, b, c, d, e, f;
- t = v[i1];
- a = t[0];
- b = t[1];
- t = v[i2];
- c = t[0];
- d = t[1];
- t = v[i3];
- e = t[0];
- f = t[1];
- return (f - b) * (c - a) - (d - b) * (e - a) > 0;
- }
- function d3_geom_polygonInside(p, a, b) {
- return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);
- }
- function d3_geom_polygonIntersect(c, d, a, b) {
- var x1 = c[0], x2 = d[0], x3 = a[0], x4 = b[0], y1 = c[1], y2 = d[1], y3 = a[1], y4 = b[1], x13 = x1 - x3, x21 = x2 - x1, x43 = x4 - x3, y13 = y1 - y3, y21 = y2 - y1, y43 = y4 - y3, ua = (x43 * y13 - y43 * x13) / (y43 * x21 - x43 * y21);
- return [ x1 + ua * x21, y1 + ua * y21 ];
- }
- function d3_voronoi_tessellate(vertices, callback) {
- var Sites = {
- list: vertices.map(function(v, i) {
- return {
- index: i,
- x: v[0],
- y: v[1]
- };
- }).sort(function(a, b) {
- return a.y < b.y ? -1 : a.y > b.y ? 1 : a.x < b.x ? -1 : a.x > b.x ? 1 : 0;
- }),
- bottomSite: null
- };
- var EdgeList = {
- list: [],
- leftEnd: null,
- rightEnd: null,
- init: function() {
- EdgeList.leftEnd = EdgeList.createHalfEdge(null, "l");
- EdgeList.rightEnd = EdgeList.createHalfEdge(null, "l");
- EdgeList.leftEnd.r = EdgeList.rightEnd;
- EdgeList.rightEnd.l = EdgeList.leftEnd;
- EdgeList.list.unshift(EdgeList.leftEnd, EdgeList.rightEnd);
- },
- createHalfEdge: function(edge, side) {
- return {
- edge: edge,
- side: side,
- vertex: null,
- l: null,
- r: null
- };
- },
- insert: function(lb, he) {
- he.l = lb;
- he.r = lb.r;
- lb.r.l = he;
- lb.r = he;
- },
- leftBound: function(p) {
- var he = EdgeList.leftEnd;
- do {
- he = he.r;
- } while (he != EdgeList.rightEnd && Geom.rightOf(he, p));
- he = he.l;
- return he;
- },
- del: function(he) {
- he.l.r = he.r;
- he.r.l = he.l;
- he.edge = null;
- },
- right: function(he) {
- return he.r;
- },
- left: function(he) {
- return he.l;
- },
- leftRegion: function(he) {
- return he.edge == null ? Sites.bottomSite : he.edge.region[he.side];
- },
- rightRegion: function(he) {
- return he.edge == null ? Sites.bottomSite : he.edge.region[d3_voronoi_opposite[he.side]];
- }
- };
- var Geom = {
- bisect: function(s1, s2) {
- var newEdge = {
- region: {
- l: s1,
- r: s2
- },
- ep: {
- l: null,
- r: null
- }
- };
- var dx = s2.x - s1.x, dy = s2.y - s1.y, adx = dx > 0 ? dx : -dx, ady = dy > 0 ? dy : -dy;
- newEdge.c = s1.x * dx + s1.y * dy + (dx * dx + dy * dy) * .5;
- if (adx > ady) {
- newEdge.a = 1;
- newEdge.b = dy / dx;
- newEdge.c /= dx;
- } else {
- newEdge.b = 1;
- newEdge.a = dx / dy;
- newEdge.c /= dy;
- }
- return newEdge;
- },
- intersect: function(el1, el2) {
- var e1 = el1.edge, e2 = el2.edge;
- if (!e1 || !e2 || e1.region.r == e2.region.r) {
- return null;
- }
- var d = e1.a * e2.b - e1.b * e2.a;
- if (Math.abs(d) < 1e-10) {
- return null;
- }
- var xint = (e1.c * e2.b - e2.c * e1.b) / d, yint = (e2.c * e1.a - e1.c * e2.a) / d, e1r = e1.region.r, e2r = e2.region.r, el, e;
- if (e1r.y < e2r.y || e1r.y == e2r.y && e1r.x < e2r.x) {
- el = el1;
- e = e1;
- } else {
- el = el2;
- e = e2;
- }
- var rightOfSite = xint >= e.region.r.x;
- if (rightOfSite && el.side === "l" || !rightOfSite && el.side === "r") {
- return null;
- }
- return {
- x: xint,
- y: yint
- };
- },
- rightOf: function(he, p) {
- var e = he.edge, topsite = e.region.r, rightOfSite = p.x > topsite.x;
- if (rightOfSite && he.side === "l") {
- return 1;
- }
- if (!rightOfSite && he.side === "r") {
- return 0;
- }
- if (e.a === 1) {
- var dyp = p.y - topsite.y, dxp = p.x - topsite.x, fast = 0, above = 0;
- if (!rightOfSite && e.b < 0 || rightOfSite && e.b >= 0) {
- above = fast = dyp >= e.b * dxp;
- } else {
- above = p.x + p.y * e.b > e.c;
- if (e.b < 0) {
- above = !above;
- }
- if (!above) {
- fast = 1;
- }
- }
- if (!fast) {
- var dxs = topsite.x - e.region.l.x;
- above = e.b * (dxp * dxp - dyp * dyp) < dxs * dyp * (1 + 2 * dxp / dxs + e.b * e.b);
- if (e.b < 0) {
- above = !above;
- }
- }
- } else {
- var yl = e.c - e.a * p.x, t1 = p.y - yl, t2 = p.x - topsite.x, t3 = yl - topsite.y;
- above = t1 * t1 > t2 * t2 + t3 * t3;
- }
- return he.side === "l" ? above : !above;
- },
- endPoint: function(edge, side, site) {
- edge.ep[side] = site;
- if (!edge.ep[d3_voronoi_opposite[side]]) return;
- callback(edge);
- },
- distance: function(s, t) {
- var dx = s.x - t.x, dy = s.y - t.y;
- return Math.sqrt(dx * dx + dy * dy);
- }
- };
- var EventQueue = {
- list: [],
- insert: function(he, site, offset) {
- he.vertex = site;
- he.ystar = site.y + offset;
- for (var i = 0, list = EventQueue.list, l = list.length; i < l; i++) {
- var next = list[i];
- if (he.ystar > next.ystar || he.ystar == next.ystar && site.x > next.vertex.x) {
- continue;
- } else {
- break;
- }
- }
- list.splice(i, 0, he);
- },
- del: function(he) {
- for (var i = 0, ls = EventQueue.list, l = ls.length; i < l && ls[i] != he; ++i) {}
- ls.splice(i, 1);
- },
- empty: function() {
- return EventQueue.list.length === 0;
- },
- nextEvent: function(he) {
- for (var i = 0, ls = EventQueue.list, l = ls.length; i < l; ++i) {
- if (ls[i] == he) return ls[i + 1];
- }
- return null;
- },
- min: function() {
- var elem = EventQueue.list[0];
- return {
- x: elem.vertex.x,
- y: elem.ystar
- };
- },
- extractMin: function() {
- return EventQueue.list.shift();
- }
- };
- EdgeList.init();
- Sites.bottomSite = Sites.list.shift();
- var newSite = Sites.list.shift(), newIntStar;
- var lbnd, rbnd, llbnd, rrbnd, bisector;
- var bot, top, temp, p, v;
- var e, pm;
- while (true) {
- if (!EventQueue.empty()) {
- newIntStar = EventQueue.min();
- }
- if (newSite && (EventQueue.empty() || newSite.y < newIntStar.y || newSite.y == newIntStar.y && newSite.x < newIntStar.x)) {
- lbnd = EdgeList.leftBound(newSite);
- rbnd = EdgeList.right(lbnd);
- bot = EdgeList.rightRegion(lbnd);
- e = Geom.bisect(bot, newSite);
- bisector = EdgeList.createHalfEdge(e, "l");
- EdgeList.insert(lbnd, bisector);
- p = Geom.intersect(lbnd, bisector);
- if (p) {
- EventQueue.del(lbnd);
- EventQueue.insert(lbnd, p, Geom.distance(p, newSite));
- }
- lbnd = bisector;
- bisector = EdgeList.createHalfEdge(e, "r");
- EdgeList.insert(lbnd, bisector);
- p = Geom.intersect(bisector, rbnd);
- if (p) {
- EventQueue.insert(bisector, p, Geom.distance(p, newSite));
- }
- newSite = Sites.list.shift();
- } else if (!EventQueue.empty()) {
- lbnd = EventQueue.extractMin();
- llbnd = EdgeList.left(lbnd);
- rbnd = EdgeList.right(lbnd);
- rrbnd = EdgeList.right(rbnd);
- bot = EdgeList.leftRegion(lbnd);
- top = EdgeList.rightRegion(rbnd);
- v = lbnd.vertex;
- Geom.endPoint(lbnd.edge, lbnd.side, v);
- Geom.endPoint(rbnd.edge, rbnd.side, v);
- EdgeList.del(lbnd);
- EventQueue.del(rbnd);
- EdgeList.del(rbnd);
- pm = "l";
- if (bot.y > top.y) {
- temp = bot;
- bot = top;
- top = temp;
- pm = "r";
- }
- e = Geom.bisect(bot, top);
- bisector = EdgeList.createHalfEdge(e, pm);
- EdgeList.insert(llbnd, bisector);
- Geom.endPoint(e, d3_voronoi_opposite[pm], v);
- p = Geom.intersect(llbnd, bisector);
- if (p) {
- EventQueue.del(llbnd);
- EventQueue.insert(llbnd, p, Geom.distance(p, bot));
- }
- p = Geom.intersect(bisector, rrbnd);
- if (p) {
- EventQueue.insert(bisector, p, Geom.distance(p, bot));
- }
- } else {
- break;
- }
- }
- for (lbnd = EdgeList.right(EdgeList.leftEnd); lbnd != EdgeList.rightEnd; lbnd = EdgeList.right(lbnd)) {
- callback(lbnd.edge);
- }
- }
- function d3_geom_quadtreeNode() {
- return {
- leaf: true,
- nodes: [],
- point: null
- };
- }
- function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {
- if (!f(node, x1, y1, x2, y2)) {
- var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes;
- if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);
- if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);
- if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);
- if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);
- }
- }
- function d3_geom_quadtreePoint(p) {
- return {
- x: p[0],
- y: p[1]
- };
- }
- function d3_time_utc() {
- this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);
- }
- function d3_time_formatAbbreviate(name) {
- return name.substring(0, 3);
- }
- function d3_time_parse(date, template, string, j) {
- var c, p, i = 0, n = template.length, m = string.length;
- while (i < n) {
- if (j >= m) return -1;
- c = template.charCodeAt(i++);
- if (c == 37) {
- p = d3_time_parsers[template.charAt(i++)];
- if (!p || (j = p(date, string, j)) < 0) return -1;
- } else if (c != string.charCodeAt(j++)) {
- return -1;
- }
- }
- return j;
- }
- function d3_time_formatRe(names) {
- return new RegExp("^(?:" + names.map(d3.requote).join("|") + ")", "i");
- }
- function d3_time_formatLookup(names) {
- var map = new d3_Map, i = -1, n = names.length;
- while (++i < n) map.set(names[i].toLowerCase(), i);
- return map;
- }
- function d3_time_parseWeekdayAbbrev(date, string, i) {
- d3_time_dayAbbrevRe.lastIndex = 0;
- var n = d3_time_dayAbbrevRe.exec(string.substring(i));
- return n ? i += n[0].length : -1;
- }
- function d3_time_parseWeekday(date, string, i) {
- d3_time_dayRe.lastIndex = 0;
- var n = d3_time_dayRe.exec(string.substring(i));
- return n ? i += n[0].length : -1;
- }
- function d3_time_parseMonthAbbrev(date, string, i) {
- d3_time_monthAbbrevRe.lastIndex = 0;
- var n = d3_time_monthAbbrevRe.exec(string.substring(i));
- return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i += n[0].length) : -1;
- }
- function d3_time_parseMonth(date, string, i) {
- d3_time_monthRe.lastIndex = 0;
- var n = d3_time_monthRe.exec(string.substring(i));
- return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i += n[0].length) : -1;
- }
- function d3_time_parseLocaleFull(date, string, i) {
- return d3_time_parse(date, d3_time_formats.c.toString(), string, i);
- }
- function d3_time_parseLocaleDate(date, string, i) {
- return d3_time_parse(date, d3_time_formats.x.toString(), string, i);
- }
- function d3_time_parseLocaleTime(date, string, i) {
- return d3_time_parse(date, d3_time_formats.X.toString(), string, i);
- }
- function d3_time_parseFullYear(date, string, i) {
- d3_time_numberRe.lastIndex = 0;
- var n = d3_time_numberRe.exec(string.substring(i, i + 4));
- return n ? (date.y = +n[0], i += n[0].length) : -1;
- }
- function d3_time_parseYear(date, string, i) {
- d3_time_numberRe.lastIndex = 0;
- var n = d3_time_numberRe.exec(string.substring(i, i + 2));
- return n ? (date.y = d3_time_expandYear(+n[0]), i += n[0].length) : -1;
- }
- function d3_time_expandYear(d) {
- return d + (d > 68 ? 1900 : 2e3);
- }
- function d3_time_parseMonthNumber(date, string, i) {
- d3_time_numberRe.lastIndex = 0;
- var n = d3_time_numberRe.exec(string.substring(i, i + 2));
- return n ? (date.m = n[0] - 1, i += n[0].length) : -1;
- }
- function d3_time_parseDay(date, string, i) {
- d3_time_numberRe.lastIndex = 0;
- var n = d3_time_numberRe.exec(string.substring(i, i + 2));
- return n ? (date.d = +n[0], i += n[0].length) : -1;
- }
- function d3_time_parseHour24(date, string, i) {
- d3_time_numberRe.lastIndex = 0;
- var n = d3_time_numberRe.exec(string.substring(i, i + 2));
- return n ? (date.H = +n[0], i += n[0].length) : -1;
- }
- function d3_time_parseMinutes(date, string, i) {
- d3_time_numberRe.lastIndex = 0;
- var n = d3_time_numberRe.exec(string.substring(i, i + 2));
- return n ? (date.M = +n[0], i += n[0].length) : -1;
- }
- function d3_time_parseSeconds(date, string, i) {
- d3_time_numberRe.lastIndex = 0;
- var n = d3_time_numberRe.exec(string.substring(i, i + 2));
- return n ? (date.S = +n[0], i += n[0].length) : -1;
- }
- function d3_time_parseMilliseconds(date, string, i) {
- d3_time_numberRe.lastIndex = 0;
- var n = d3_time_numberRe.exec(string.substring(i, i + 3));
- return n ? (date.L = +n[0], i += n[0].length) : -1;
- }
- function d3_time_parseAmPm(date, string, i) {
- var n = d3_time_amPmLookup.get(string.substring(i, i += 2).toLowerCase());
- return n == null ? -1 : (date.p = n, i);
- }
- function d3_time_zone(d) {
- var z = d.getTimezoneOffset(), zs = z > 0 ? "-" : "+", zh = ~~(Math.abs(z) / 60), zm = Math.abs(z) % 60;
- return zs + d3_time_zfill2(zh) + d3_time_zfill2(zm);
- }
- function d3_time_formatIsoNative(date) {
- return date.toISOString();
- }
- function d3_time_interval(local, step, number) {
- function round(date) {
- var d0 = local(date), d1 = offset(d0, 1);
- return date - d0 < d1 - date ? d0 : d1;
- }
- function ceil(date) {
- step(date = local(new d3_time(date - 1)), 1);
- return date;
- }
- function offset(date, k) {
- step(date = new d3_time(+date), k);
- return date;
- }
- function range(t0, t1, dt) {
- var time = ceil(t0), times = [];
- if (dt > 1) {
- while (time < t1) {
- if (!(number(time) % dt)) times.push(new Date(+time));
- step(time, 1);
- }
- } else {
- while (time < t1) times.push(new Date(+time)), step(time, 1);
- }
- return times;
- }
- function range_utc(t0, t1, dt) {
- try {
- d3_time = d3_time_utc;
- var utc = new d3_time_utc;
- utc._ = t0;
- return range(utc, t1, dt);
- } finally {
- d3_time = Date;
- }
- }
- local.floor = local;
- local.round = round;
- local.ceil = ceil;
- local.offset = offset;
- local.range = range;
- var utc = local.utc = d3_time_interval_utc(local);
- utc.floor = utc;
- utc.round = d3_time_interval_utc(round);
- utc.ceil = d3_time_interval_utc(ceil);
- utc.offset = d3_time_interval_utc(offset);
- utc.range = range_utc;
- return local;
- }
- function d3_time_interval_utc(method) {
- return function(date, k) {
- try {
- d3_time = d3_time_utc;
- var utc = new d3_time_utc;
- utc._ = date;
- return method(utc, k)._;
- } finally {
- d3_time = Date;
- }
- };
- }
- function d3_time_scale(linear, methods, format) {
- function scale(x) {
- return linear(x);
- }
- scale.invert = function(x) {
- return d3_time_scaleDate(linear.invert(x));
- };
- scale.domain = function(x) {
- if (!arguments.length) return linear.domain().map(d3_time_scaleDate);
- linear.domain(x);
- return scale;
- };
- scale.nice = function(m) {
- return scale.domain(d3_scale_nice(scale.domain(), function() {
- return m;
- }));
- };
- scale.ticks = function(m, k) {
- var extent = d3_time_scaleExtent(scale.domain());
- if (typeof m !== "function") {
- var span = extent[1] - extent[0], target = span / m, i = d3.bisect(d3_time_scaleSteps, target);
- if (i == d3_time_scaleSteps.length) return methods.year(extent, m);
- if (!i) return linear.ticks(m).map(d3_time_scaleDate);
- if (Math.log(target / d3_time_scaleSteps[i - 1]) < Math.log(d3_time_scaleSteps[i] / target)) --i;
- m = methods[i];
- k = m[1];
- m = m[0].range;
- }
- return m(extent[0], new Date(+extent[1] + 1), k);
- };
- scale.tickFormat = function() {
- return format;
- };
- scale.copy = function() {
- return d3_time_scale(linear.copy(), methods, format);
- };
- return d3.rebind(scale, linear, "range", "rangeRound", "interpolate", "clamp");
- }
- function d3_time_scaleExtent(domain) {
- var start = domain[0], stop = domain[domain.length - 1];
- return start < stop ? [ start, stop ] : [ stop, start ];
- }
- function d3_time_scaleDate(t) {
- return new Date(t);
- }
- function d3_time_scaleFormat(formats) {
- return function(date) {
- var i = formats.length - 1, f = formats[i];
- while (!f[1](date)) f = formats[--i];
- return f[0](date);
- };
- }
- function d3_time_scaleSetYear(y) {
- var d = new Date(y, 0, 1);
- d.setFullYear(y);
- return d;
- }
- function d3_time_scaleGetYear(d) {
- var y = d.getFullYear(), d0 = d3_time_scaleSetYear(y), d1 = d3_time_scaleSetYear(y + 1);
- return y + (d - d0) / (d1 - d0);
- }
- function d3_time_scaleUTCSetYear(y) {
- var d = new Date(Date.UTC(y, 0, 1));
- d.setUTCFullYear(y);
- return d;
- }
- function d3_time_scaleUTCGetYear(d) {
- var y = d.getUTCFullYear(), d0 = d3_time_scaleUTCSetYear(y), d1 = d3_time_scaleUTCSetYear(y + 1);
- return y + (d - d0) / (d1 - d0);
- }
- if (!Date.now) Date.now = function() {
- return +(new Date);
- };
- try {
- document.createElement("div").style.setProperty("opacity", 0, "");
- } catch (error) {
- var d3_style_prototype = CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;
- d3_style_prototype.setProperty = function(name, value, priority) {
- d3_style_setProperty.call(this, name, value + "", priority);
- };
- }
- d3 = {
- version: "2.10.2"
- };
- var d3_array = d3_arraySlice;
- try {
- d3_array(document.documentElement.childNodes)[0].nodeType;
- } catch (e) {
- d3_array = d3_arrayCopy;
- }
- var d3_arraySubclass = [].__proto__ ? function(array, prototype) {
- array.__proto__ = prototype;
- } : function(array, prototype) {
- for (var property in prototype) array[property] = prototype[property];
- };
- d3.map = function(object) {
- var map = new d3_Map;
- for (var key in object) map.set(key, object[key]);
- return map;
- };
- d3_class(d3_Map, {
- has: function(key) {
- return d3_map_prefix + key in this;
- },
- get: function(key) {
- return this[d3_map_prefix + key];
- },
- set: function(key, value) {
- return this[d3_map_prefix + key] = value;
- },
- remove: function(key) {
- key = d3_map_prefix + key;
- return key in this && delete this[key];
- },
- keys: function() {
- var keys = [];
- this.forEach(function(key) {
- keys.push(key);
- });
- return keys;
- },
- values: function() {
- var values = [];
- this.forEach(function(key, value) {
- values.push(value);
- });
- return values;
- },
- entries: function() {
- var entries = [];
- this.forEach(function(key, value) {
- entries.push({
- key: key,
- value: value
- });
- });
- return entries;
- },
- forEach: function(f) {
- for (var key in this) {
- if (key.charCodeAt(0) === d3_map_prefixCode) {
- f.call(this, key.substring(1), this[key]);
- }
- }
- }
- });
- var d3_map_prefix = "\0", d3_map_prefixCode = d3_map_prefix.charCodeAt(0);
- d3.functor = d3_functor;
- d3.rebind = function(target, source) {
- var i = 1, n = arguments.length, method;
- while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);
- return target;
- };
- d3.ascending = function(a, b) {
- return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
- };
- d3.descending = function(a, b) {
- return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;
- };
- d3.mean = function(array, f) {
- var n = array.length, a, m = 0, i = -1, j = 0;
- if (arguments.length === 1) {
- while (++i < n) if (d3_number(a = array[i])) m += (a - m) / ++j;
- } else {
- while (++i < n) if (d3_number(a = f.call(array, array[i], i))) m += (a - m) / ++j;
- }
- return j ? m : undefined;
- };
- d3.median = function(array, f) {
- if (arguments.length > 1) array = array.map(f);
- array = array.filter(d3_number);
- return array.length ? d3.quantile(array.sort(d3.ascending), .5) : undefined;
- };
- d3.min = function(array, f) {
- var i = -1, n = array.length, a, b;
- if (arguments.length === 1) {
- while (++i < n && ((a = array[i]) == null || a != a)) a = undefined;
- while (++i < n) if ((b = array[i]) != null && a > b) a = b;
- } else {
- while (++i < n && ((a = f.call(array, array[i], i)) == null || a != a)) a = undefined;
- while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;
- }
- return a;
- };
- d3.max = function(array, f) {
- var i = -1, n = array.length, a, b;
- if (arguments.length === 1) {
- while (++i < n && ((a = array[i]) == null || a != a)) a = undefined;
- while (++i < n) if ((b = array[i]) != null && b > a) a = b;
- } else {
- while (++i < n && ((a = f.call(array, array[i], i)) == null || a != a)) a = undefined;
- while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;
- }
- return a;
- };
- d3.extent = function(array, f) {
- var i = -1, n = array.length, a, b, c;
- if (arguments.length === 1) {
- while (++i < n && ((a = c = array[i]) == null || a != a)) a = c = undefined;
- while (++i < n) if ((b = array[i]) != null) {
- if (a > b) a = b;
- if (c < b) c = b;
- }
- } else {
- while (++i < n && ((a = c = f.call(array, array[i], i)) == null || a != a)) a = undefined;
- while (++i < n) if ((b = f.call(array, array[i], i)) != null) {
- if (a > b) a = b;
- if (c < b) c = b;
- }
- }
- return [ a, c ];
- };
- d3.random = {
- normal: function(µ, σ) {
- var n
<TRUNCATED>
[7/8] Revert "AMBARI-5928. Create and populate Metrics section of a
slider app. (onechiporenko)" - changes made in ambari-web
Posted by sr...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/ambari-web/contrib/views/slider/src/main/resources/ui/app/assets/data/metrics/metric2.json
----------------------------------------------------------------------
diff --git a/ambari-web/contrib/views/slider/src/main/resources/ui/app/assets/data/metrics/metric2.json b/ambari-web/contrib/views/slider/src/main/resources/ui/app/assets/data/metrics/metric2.json
deleted file mode 100644
index 15b9200..0000000
--- a/ambari-web/contrib/views/slider/src/main/resources/ui/app/assets/data/metrics/metric2.json
+++ /dev/null
@@ -1,3838 +0,0 @@
-{
- "metrics" : {
- "jvm" : {
- "threadsBlocked" : [
- [
- 0.0,
- 1401359115
- ],
- [
- 0.0,
- 1401359130
- ],
- [
- 0.0,
- 1401359145
- ],
- [
- 0.0,
- 1401359160
- ],
- [
- 0.0,
- 1401359175
- ],
- [
- 0.0,
- 1401359190
- ],
- [
- 0.0,
- 1401359205
- ],
- [
- 0.0,
- 1401359220
- ],
- [
- 0.0,
- 1401359235
- ],
- [
- 0.0,
- 1401359250
- ],
- [
- 0.0,
- 1401359265
- ],
- [
- 0.0,
- 1401359280
- ],
- [
- 0.0,
- 1401359295
- ],
- [
- 0.0,
- 1401359310
- ],
- [
- 0.0,
- 1401359325
- ],
- [
- 0.0,
- 1401359340
- ],
- [
- 0.0,
- 1401359355
- ],
- [
- 0.0,
- 1401359370
- ],
- [
- 0.0,
- 1401359385
- ],
- [
- 0.0,
- 1401359400
- ],
- [
- 0.0,
- 1401359415
- ],
- [
- 0.0,
- 1401359430
- ],
- [
- 0.0,
- 1401359445
- ],
- [
- 0.0,
- 1401359460
- ],
- [
- 0.0,
- 1401359475
- ],
- [
- 0.0,
- 1401359490
- ],
- [
- 0.0,
- 1401359505
- ],
- [
- 0.0,
- 1401359520
- ],
- [
- 0.0,
- 1401359535
- ],
- [
- 0.0,
- 1401359550
- ],
- [
- 0.0,
- 1401359565
- ],
- [
- 0.0,
- 1401359580
- ],
- [
- 0.0,
- 1401359595
- ],
- [
- 0.0,
- 1401359610
- ],
- [
- 0.0,
- 1401359625
- ],
- [
- 0.0,
- 1401359640
- ],
- [
- 0.0,
- 1401359655
- ],
- [
- 0.0,
- 1401359670
- ],
- [
- 0.0,
- 1401359685
- ],
- [
- 0.0,
- 1401359700
- ],
- [
- 0.0,
- 1401359715
- ],
- [
- 0.0,
- 1401359730
- ],
- [
- 0.0,
- 1401359745
- ],
- [
- 0.0,
- 1401359760
- ],
- [
- 0.0,
- 1401359775
- ],
- [
- 0.0,
- 1401359790
- ],
- [
- 0.0,
- 1401359805
- ],
- [
- 0.0,
- 1401359820
- ],
- [
- 0.0,
- 1401359835
- ],
- [
- 0.0,
- 1401359850
- ],
- [
- 0.0,
- 1401359865
- ],
- [
- 0.0,
- 1401359880
- ],
- [
- 0.0,
- 1401359895
- ],
- [
- 0.0,
- 1401359910
- ],
- [
- 0.0,
- 1401359925
- ],
- [
- 0.0,
- 1401359940
- ],
- [
- 0.0,
- 1401359955
- ],
- [
- 0.0,
- 1401359970
- ],
- [
- 0.0,
- 1401359985
- ],
- [
- 0.0,
- 1401360000
- ],
- [
- 0.0,
- 1401360015
- ],
- [
- 0.0,
- 1401360030
- ],
- [
- 0.0,
- 1401360045
- ],
- [
- 0.0,
- 1401360060
- ],
- [
- 0.0,
- 1401360075
- ],
- [
- 0.0,
- 1401360090
- ],
- [
- 0.0,
- 1401360105
- ],
- [
- 0.0,
- 1401360120
- ],
- [
- 0.0,
- 1401360135
- ],
- [
- 0.0,
- 1401360150
- ],
- [
- 0.0,
- 1401360165
- ],
- [
- 0.0,
- 1401360180
- ],
- [
- 0.0,
- 1401360195
- ],
- [
- 0.0,
- 1401360210
- ],
- [
- 0.0,
- 1401360225
- ],
- [
- 0.0,
- 1401360240
- ],
- [
- 0.0,
- 1401360255
- ],
- [
- 0.0,
- 1401360270
- ],
- [
- 0.0,
- 1401360285
- ],
- [
- 0.0,
- 1401360300
- ],
- [
- 0.0,
- 1401360315
- ],
- [
- 0.0,
- 1401360330
- ],
- [
- 0.0,
- 1401360345
- ],
- [
- 0.0,
- 1401360360
- ],
- [
- 0.0,
- 1401360375
- ],
- [
- 0.0,
- 1401360390
- ],
- [
- 0.0,
- 1401360405
- ],
- [
- 0.0,
- 1401360420
- ],
- [
- 0.0,
- 1401360435
- ],
- [
- 0.0,
- 1401360450
- ],
- [
- 0.0,
- 1401360465
- ],
- [
- 0.0,
- 1401360480
- ],
- [
- 0.0,
- 1401360495
- ],
- [
- 0.0,
- 1401360510
- ],
- [
- 0.0,
- 1401360525
- ],
- [
- 0.0,
- 1401360540
- ],
- [
- 0.0,
- 1401360555
- ],
- [
- 0.0,
- 1401360570
- ],
- [
- 0.0,
- 1401360585
- ],
- [
- 0.0,
- 1401360600
- ],
- [
- 0.0,
- 1401360615
- ],
- [
- 0.0,
- 1401360630
- ],
- [
- 0.0,
- 1401360645
- ],
- [
- 0.0,
- 1401360660
- ],
- [
- 0.0,
- 1401360675
- ],
- [
- 0.0,
- 1401360690
- ],
- [
- 0.0,
- 1401360705
- ],
- [
- 0.0,
- 1401360720
- ],
- [
- 0.0,
- 1401360735
- ],
- [
- 0.0,
- 1401360750
- ],
- [
- 0.0,
- 1401360765
- ],
- [
- 0.0,
- 1401360780
- ],
- [
- 0.0,
- 1401360795
- ],
- [
- 0.0,
- 1401360810
- ],
- [
- 0.0,
- 1401360825
- ],
- [
- 0.0,
- 1401360840
- ],
- [
- 0.0,
- 1401360855
- ],
- [
- 0.0,
- 1401360870
- ],
- [
- 0.0,
- 1401360885
- ],
- [
- 0.0,
- 1401360900
- ],
- [
- 0.0,
- 1401360915
- ],
- [
- 0.0,
- 1401360930
- ],
- [
- 0.0,
- 1401360945
- ],
- [
- 0.0,
- 1401360960
- ],
- [
- 0.0,
- 1401360975
- ],
- [
- 0.0,
- 1401360990
- ],
- [
- 0.0,
- 1401361005
- ],
- [
- 0.0,
- 1401361020
- ],
- [
- 0.0,
- 1401361035
- ],
- [
- 0.0,
- 1401361050
- ],
- [
- 0.0,
- 1401361065
- ],
- [
- 0.0,
- 1401361080
- ],
- [
- 0.0,
- 1401361095
- ],
- [
- 0.0,
- 1401361110
- ],
- [
- 0.0,
- 1401361125
- ],
- [
- 0.0,
- 1401361140
- ],
- [
- 0.0,
- 1401361155
- ],
- [
- 0.0,
- 1401361170
- ],
- [
- 0.0,
- 1401361185
- ],
- [
- 0.0,
- 1401361200
- ],
- [
- 0.0,
- 1401361215
- ],
- [
- 0.0,
- 1401361230
- ],
- [
- 0.0,
- 1401361245
- ],
- [
- 0.0,
- 1401361260
- ],
- [
- 0.0,
- 1401361275
- ],
- [
- 0.0,
- 1401361290
- ],
- [
- 0.0,
- 1401361305
- ],
- [
- 0.0,
- 1401361320
- ],
- [
- 0.0,
- 1401361335
- ],
- [
- 0.0,
- 1401361350
- ],
- [
- 0.0,
- 1401361365
- ],
- [
- 0.0,
- 1401361380
- ],
- [
- 0.0,
- 1401361395
- ],
- [
- 0.0,
- 1401361410
- ],
- [
- 0.0,
- 1401361425
- ],
- [
- 0.0,
- 1401361440
- ],
- [
- 0.0,
- 1401361455
- ],
- [
- 0.0,
- 1401361470
- ],
- [
- 0.0,
- 1401361485
- ],
- [
- 0.0,
- 1401361500
- ],
- [
- 0.0,
- 1401361515
- ],
- [
- 0.0,
- 1401361530
- ],
- [
- 0.0,
- 1401361545
- ],
- [
- 0.0,
- 1401361560
- ],
- [
- 0.0,
- 1401361575
- ],
- [
- 0.0,
- 1401361590
- ],
- [
- 0.0,
- 1401361605
- ],
- [
- 0.0,
- 1401361620
- ],
- [
- 0.0,
- 1401361635
- ],
- [
- 0.0,
- 1401361650
- ],
- [
- 0.0,
- 1401361665
- ],
- [
- 0.0,
- 1401361680
- ],
- [
- 0.0,
- 1401361695
- ],
- [
- 0.0,
- 1401361710
- ],
- [
- 0.0,
- 1401361725
- ],
- [
- 0.0,
- 1401361740
- ],
- [
- 0.0,
- 1401361755
- ],
- [
- 0.0,
- 1401361770
- ],
- [
- 0.0,
- 1401361785
- ],
- [
- 0.0,
- 1401361800
- ],
- [
- 0.0,
- 1401361815
- ],
- [
- 0.0,
- 1401361830
- ],
- [
- 0.0,
- 1401361845
- ],
- [
- 0.0,
- 1401361860
- ],
- [
- 0.0,
- 1401361875
- ],
- [
- 0.0,
- 1401361890
- ],
- [
- 0.0,
- 1401361905
- ],
- [
- 0.0,
- 1401361920
- ],
- [
- 0.0,
- 1401361935
- ],
- [
- 0.0,
- 1401361950
- ],
- [
- 0.0,
- 1401361965
- ],
- [
- 0.0,
- 1401361980
- ],
- [
- 0.0,
- 1401361995
- ],
- [
- 0.0,
- 1401362010
- ],
- [
- 0.0,
- 1401362025
- ],
- [
- 0.0,
- 1401362040
- ],
- [
- 0.0,
- 1401362055
- ],
- [
- 0.0,
- 1401362070
- ],
- [
- 0.0,
- 1401362085
- ],
- [
- 0.0,
- 1401362100
- ],
- [
- 0.0,
- 1401362115
- ],
- [
- 0.0,
- 1401362130
- ],
- [
- 0.0,
- 1401362145
- ],
- [
- 0.0,
- 1401362160
- ],
- [
- 0.0,
- 1401362175
- ],
- [
- 0.0,
- 1401362190
- ],
- [
- 0.0,
- 1401362205
- ],
- [
- 0.0,
- 1401362220
- ],
- [
- 0.0,
- 1401362235
- ],
- [
- 0.0,
- 1401362250
- ],
- [
- 0.0,
- 1401362265
- ],
- [
- 0.0,
- 1401362280
- ],
- [
- 0.0,
- 1401362295
- ],
- [
- 0.0,
- 1401362310
- ],
- [
- 0.0,
- 1401362325
- ],
- [
- 0.0,
- 1401362340
- ],
- [
- 0.0,
- 1401362355
- ],
- [
- 0.0,
- 1401362370
- ],
- [
- 0.0,
- 1401362385
- ],
- [
- 0.0,
- 1401362400
- ],
- [
- 0.0,
- 1401362415
- ],
- [
- 0.0,
- 1401362430
- ],
- [
- 0.0,
- 1401362445
- ],
- [
- 0.0,
- 1401362460
- ],
- [
- 0.0,
- 1401362475
- ],
- [
- 0.0,
- 1401362490
- ],
- [
- 0.0,
- 1401362505
- ],
- [
- 0.0,
- 1401362520
- ],
- [
- 0.0,
- 1401362535
- ],
- [
- 0.0,
- 1401362550
- ],
- [
- 0.0,
- 1401362565
- ],
- [
- 0.0,
- 1401362580
- ],
- [
- 0.0,
- 1401362595
- ],
- [
- 0.0,
- 1401362610
- ],
- [
- 0.0,
- 1401362625
- ],
- [
- 0.0,
- 1401362640
- ],
- [
- 0.0,
- 1401362655
- ],
- [
- 0.0,
- 1401362670
- ],
- [
- 0.0,
- 1401362685
- ]
- ],
- "threadsRunnable" : [
- [
- 7.0,
- 1401359115
- ],
- [
- 7.0,
- 1401359130
- ],
- [
- 7.0,
- 1401359145
- ],
- [
- 7.0,
- 1401359160
- ],
- [
- 7.0,
- 1401359175
- ],
- [
- 7.0,
- 1401359190
- ],
- [
- 7.0,
- 1401359205
- ],
- [
- 7.0,
- 1401359220
- ],
- [
- 7.0,
- 1401359235
- ],
- [
- 7.0,
- 1401359250
- ],
- [
- 7.0,
- 1401359265
- ],
- [
- 7.0,
- 1401359280
- ],
- [
- 7.0,
- 1401359295
- ],
- [
- 7.0,
- 1401359310
- ],
- [
- 7.0,
- 1401359325
- ],
- [
- 7.0,
- 1401359340
- ],
- [
- 7.0,
- 1401359355
- ],
- [
- 7.0,
- 1401359370
- ],
- [
- 7.0,
- 1401359385
- ],
- [
- 7.0,
- 1401359400
- ],
- [
- 7.06666666667,
- 1401359415
- ],
- [
- 8.0,
- 1401359430
- ],
- [
- 7.93333333333,
- 1401359445
- ],
- [
- 7.0,
- 1401359460
- ],
- [
- 7.0,
- 1401359475
- ],
- [
- 7.0,
- 1401359490
- ],
- [
- 7.0,
- 1401359505
- ],
- [
- 7.0,
- 1401359520
- ],
- [
- 7.0,
- 1401359535
- ],
- [
- 7.0,
- 1401359550
- ],
- [
- 7.0,
- 1401359565
- ],
- [
- 7.0,
- 1401359580
- ],
- [
- 7.13333333333,
- 1401359595
- ],
- [
- 7.93333333333,
- 1401359610
- ],
- [
- 7.0,
- 1401359625
- ],
- [
- 7.0,
- 1401359640
- ],
- [
- 7.0,
- 1401359655
- ],
- [
- 7.06666666667,
- 1401359670
- ],
- [
- 7.93333333333,
- 1401359685
- ],
- [
- 7.0,
- 1401359700
- ],
- [
- 7.0,
- 1401359715
- ],
- [
- 7.0,
- 1401359730
- ],
- [
- 7.0,
- 1401359745
- ],
- [
- 7.0,
- 1401359760
- ],
- [
- 7.0,
- 1401359775
- ],
- [
- 7.13333333333,
- 1401359790
- ],
- [
- 7.86666666667,
- 1401359805
- ],
- [
- 7.0,
- 1401359820
- ],
- [
- 7.13333333333,
- 1401359835
- ],
- [
- 7.86666666667,
- 1401359850
- ],
- [
- 7.0,
- 1401359865
- ],
- [
- 7.0,
- 1401359880
- ],
- [
- 7.0,
- 1401359895
- ],
- [
- 7.0,
- 1401359910
- ],
- [
- 7.0,
- 1401359925
- ],
- [
- 7.0,
- 1401359940
- ],
- [
- 7.0,
- 1401359955
- ],
- [
- 7.0,
- 1401359970
- ],
- [
- 7.0,
- 1401359985
- ],
- [
- 7.0,
- 1401360000
- ],
- [
- 8.0,
- 1401360015
- ],
- [
- 7.0,
- 1401360030
- ],
- [
- 8.0,
- 1401360045
- ],
- [
- 7.06666666667,
- 1401360060
- ],
- [
- 7.0,
- 1401360075
- ],
- [
- 7.0,
- 1401360090
- ],
- [
- 7.0,
- 1401360105
- ],
- [
- 7.0,
- 1401360120
- ],
- [
- 7.0,
- 1401360135
- ],
- [
- 8.0,
- 1401360150
- ],
- [
- 7.06666666667,
- 1401360165
- ],
- [
- 7.0,
- 1401360180
- ],
- [
- 7.0,
- 1401360195
- ],
- [
- 7.86666666667,
- 1401360210
- ],
- [
- 7.13333333333,
- 1401360225
- ],
- [
- 7.0,
- 1401360240
- ],
- [
- 7.0,
- 1401360255
- ],
- [
- 7.0,
- 1401360270
- ],
- [
- 7.0,
- 1401360285
- ],
- [
- 7.0,
- 1401360300
- ],
- [
- 7.0,
- 1401360315
- ],
- [
- 7.0,
- 1401360330
- ],
- [
- 7.0,
- 1401360345
- ],
- [
- 7.0,
- 1401360360
- ],
- [
- 7.0,
- 1401360375
- ],
- [
- 7.0,
- 1401360390
- ],
- [
- 7.0,
- 1401360405
- ],
- [
- 7.0,
- 1401360420
- ],
- [
- 7.0,
- 1401360435
- ],
- [
- 7.0,
- 1401360450
- ],
- [
- 7.0,
- 1401360465
- ],
- [
- 7.0,
- 1401360480
- ],
- [
- 7.8,
- 1401360495
- ],
- [
- 7.2,
- 1401360510
- ],
- [
- 7.0,
- 1401360525
- ],
- [
- 7.0,
- 1401360540
- ],
- [
- 7.0,
- 1401360555
- ],
- [
- 7.0,
- 1401360570
- ],
- [
- 7.0,
- 1401360585
- ],
- [
- 7.0,
- 1401360600
- ],
- [
- 7.8,
- 1401360615
- ],
- [
- 7.2,
- 1401360630
- ],
- [
- 7.0,
- 1401360645
- ],
- [
- 7.0,
- 1401360660
- ],
- [
- 7.0,
- 1401360675
- ],
- [
- 7.0,
- 1401360690
- ],
- [
- 7.0,
- 1401360705
- ],
- [
- 7.0,
- 1401360720
- ],
- [
- 7.0,
- 1401360735
- ],
- [
- 7.0,
- 1401360750
- ],
- [
- 7.0,
- 1401360765
- ],
- [
- 7.0,
- 1401360780
- ],
- [
- 7.0,
- 1401360795
- ],
- [
- 7.0,
- 1401360810
- ],
- [
- 7.0,
- 1401360825
- ],
- [
- 7.0,
- 1401360840
- ],
- [
- 7.0,
- 1401360855
- ],
- [
- 7.0,
- 1401360870
- ],
- [
- 7.0,
- 1401360885
- ],
- [
- 7.0,
- 1401360900
- ],
- [
- 7.0,
- 1401360915
- ],
- [
- 7.0,
- 1401360930
- ],
- [
- 7.0,
- 1401360945
- ],
- [
- 7.0,
- 1401360960
- ],
- [
- 7.0,
- 1401360975
- ],
- [
- 7.0,
- 1401360990
- ],
- [
- 7.0,
- 1401361005
- ],
- [
- 7.0,
- 1401361020
- ],
- [
- 7.0,
- 1401361035
- ],
- [
- 7.0,
- 1401361050
- ],
- [
- 7.0,
- 1401361065
- ],
- [
- 7.0,
- 1401361080
- ],
- [
- 7.0,
- 1401361095
- ],
- [
- 7.0,
- 1401361110
- ],
- [
- 7.0,
- 1401361125
- ],
- [
- 7.0,
- 1401361140
- ],
- [
- 7.0,
- 1401361155
- ],
- [
- 7.0,
- 1401361170
- ],
- [
- 7.0,
- 1401361185
- ],
- [
- 7.0,
- 1401361200
- ],
- [
- 7.0,
- 1401361215
- ],
- [
- 7.0,
- 1401361230
- ],
- [
- 7.0,
- 1401361245
- ],
- [
- 7.0,
- 1401361260
- ],
- [
- 7.0,
- 1401361275
- ],
- [
- 7.0,
- 1401361290
- ],
- [
- 7.0,
- 1401361305
- ],
- [
- 7.0,
- 1401361320
- ],
- [
- 7.0,
- 1401361335
- ],
- [
- 7.0,
- 1401361350
- ],
- [
- 7.0,
- 1401361365
- ],
- [
- 7.0,
- 1401361380
- ],
- [
- 7.0,
- 1401361395
- ],
- [
- 7.0,
- 1401361410
- ],
- [
- 7.0,
- 1401361425
- ],
- [
- 7.0,
- 1401361440
- ],
- [
- 7.0,
- 1401361455
- ],
- [
- 7.0,
- 1401361470
- ],
- [
- 7.0,
- 1401361485
- ],
- [
- 7.0,
- 1401361500
- ],
- [
- 7.0,
- 1401361515
- ],
- [
- 7.0,
- 1401361530
- ],
- [
- 7.0,
- 1401361545
- ],
- [
- 7.0,
- 1401361560
- ],
- [
- 7.0,
- 1401361575
- ],
- [
- 7.0,
- 1401361590
- ],
- [
- 7.0,
- 1401361605
- ],
- [
- 7.0,
- 1401361620
- ],
- [
- 7.0,
- 1401361635
- ],
- [
- 7.0,
- 1401361650
- ],
- [
- 7.0,
- 1401361665
- ],
- [
- 7.0,
- 1401361680
- ],
- [
- 7.0,
- 1401361695
- ],
- [
- 7.0,
- 1401361710
- ],
- [
- 7.0,
- 1401361725
- ],
- [
- 7.0,
- 1401361740
- ],
- [
- 7.0,
- 1401361755
- ],
- [
- 7.0,
- 1401361770
- ],
- [
- 7.0,
- 1401361785
- ],
- [
- 7.0,
- 1401361800
- ],
- [
- 7.0,
- 1401361815
- ],
- [
- 7.0,
- 1401361830
- ],
- [
- 7.0,
- 1401361845
- ],
- [
- 7.0,
- 1401361860
- ],
- [
- 7.0,
- 1401361875
- ],
- [
- 7.0,
- 1401361890
- ],
- [
- 7.0,
- 1401361905
- ],
- [
- 7.0,
- 1401361920
- ],
- [
- 7.0,
- 1401361935
- ],
- [
- 7.0,
- 1401361950
- ],
- [
- 7.0,
- 1401361965
- ],
- [
- 7.0,
- 1401361980
- ],
- [
- 7.0,
- 1401361995
- ],
- [
- 7.0,
- 1401362010
- ],
- [
- 7.0,
- 1401362025
- ],
- [
- 7.0,
- 1401362040
- ],
- [
- 7.0,
- 1401362055
- ],
- [
- 7.0,
- 1401362070
- ],
- [
- 7.0,
- 1401362085
- ],
- [
- 7.0,
- 1401362100
- ],
- [
- 7.0,
- 1401362115
- ],
- [
- 7.0,
- 1401362130
- ],
- [
- 7.0,
- 1401362145
- ],
- [
- 7.0,
- 1401362160
- ],
- [
- 7.0,
- 1401362175
- ],
- [
- 7.0,
- 1401362190
- ],
- [
- 7.0,
- 1401362205
- ],
- [
- 7.0,
- 1401362220
- ],
- [
- 7.0,
- 1401362235
- ],
- [
- 7.0,
- 1401362250
- ],
- [
- 7.0,
- 1401362265
- ],
- [
- 7.0,
- 1401362280
- ],
- [
- 7.0,
- 1401362295
- ],
- [
- 7.0,
- 1401362310
- ],
- [
- 7.0,
- 1401362325
- ],
- [
- 7.0,
- 1401362340
- ],
- [
- 7.0,
- 1401362355
- ],
- [
- 7.0,
- 1401362370
- ],
- [
- 7.0,
- 1401362385
- ],
- [
- 7.0,
- 1401362400
- ],
- [
- 7.0,
- 1401362415
- ],
- [
- 7.0,
- 1401362430
- ],
- [
- 7.0,
- 1401362445
- ],
- [
- 7.0,
- 1401362460
- ],
- [
- 7.0,
- 1401362475
- ],
- [
- 7.0,
- 1401362490
- ],
- [
- 7.0,
- 1401362505
- ],
- [
- 7.0,
- 1401362520
- ],
- [
- 7.0,
- 1401362535
- ],
- [
- 7.0,
- 1401362550
- ],
- [
- 7.0,
- 1401362565
- ],
- [
- 7.0,
- 1401362580
- ],
- [
- 7.0,
- 1401362595
- ],
- [
- 7.0,
- 1401362610
- ],
- [
- 7.0,
- 1401362625
- ],
- [
- 7.0,
- 1401362640
- ],
- [
- 7.0,
- 1401362655
- ],
- [
- 7.0,
- 1401362670
- ],
- [
- 7.0,
- 1401362685
- ]
- ],
- "threadsTimedWaiting" : [
- [
- 54.0666666667,
- 1401359115
- ],
- [
- 55.0,
- 1401359130
- ],
- [
- 55.0,
- 1401359145
- ],
- [
- 54.9333333333,
- 1401359160
- ],
- [
- 54.0,
- 1401359175
- ],
- [
- 54.0,
- 1401359190
- ],
- [
- 54.0,
- 1401359205
- ],
- [
- 54.0,
- 1401359220
- ],
- [
- 54.0,
- 1401359235
- ],
- [
- 54.0,
- 1401359250
- ],
- [
- 54.0,
- 1401359265
- ],
- [
- 54.0,
- 1401359280
- ],
- [
- 54.0,
- 1401359295
- ],
- [
- 54.0,
- 1401359310
- ],
- [
- 54.0,
- 1401359325
- ],
- [
- 54.0,
- 1401359340
- ],
- [
- 54.0,
- 1401359355
- ],
- [
- 54.0,
- 1401359370
- ],
- [
- 54.0,
- 1401359385
- ],
- [
- 54.0,
- 1401359400
- ],
- [
- 53.9333333333,
- 1401359415
- ],
- [
- 53.0,
- 1401359430
- ],
- [
- 53.0666666667,
- 1401359445
- ],
- [
- 54.0,
- 1401359460
- ],
- [
- 54.1333333333,
- 1401359475
- ],
- [
- 55.0,
- 1401359490
- ],
- [
- 55.0,
- 1401359505
- ],
- [
- 55.0,
- 1401359520
- ],
- [
- 54.8666666667,
- 1401359535
- ],
- [
- 54.0,
- 1401359550
- ],
- [
- 54.0,
- 1401359565
- ],
- [
- 54.0666666667,
- 1401359580
- ],
- [
- 54.7333333333,
- 1401359595
- ],
- [
- 53.0666666667,
- 1401359610
- ],
- [
- 54.0,
- 1401359625
- ],
- [
- 54.0666666667,
- 1401359640
- ],
- [
- 54.9333333333,
- 1401359655
- ],
- [
- 53.9333333333,
- 1401359670
- ],
- [
- 53.1333333333,
- 1401359685
- ],
- [
- 55.0,
- 1401359700
- ],
- [
- 54.8666666667,
- 1401359715
- ],
- [
- 54.0,
- 1401359730
- ],
- [
- 54.0,
- 1401359745
- ],
- [
- 54.0,
- 1401359760
- ],
- [
- 54.0,
- 1401359775
- ],
- [
- 53.8666666667,
- 1401359790
- ],
- [
- 53.1333333333,
- 1401359805
- ],
- [
- 54.0,
- 1401359820
- ],
- [
- 53.8666666667,
- 1401359835
- ],
- [
- 53.1333333333,
- 1401359850
- ],
- [
- 54.0,
- 1401359865
- ],
- [
- 54.0,
- 1401359880
- ],
- [
- 54.0,
- 1401359895
- ],
- [
- 54.0,
- 1401359910
- ],
- [
- 54.0,
- 1401359925
- ],
- [
- 54.0,
- 1401359940
- ],
- [
- 54.0,
- 1401359955
- ],
- [
- 54.0,
- 1401359970
- ],
- [
- 54.0,
- 1401359985
- ],
- [
- 54.0,
- 1401360000
- ],
- [
- 53.0,
- 1401360015
- ],
- [
- 54.0,
- 1401360030
- ],
- [
- 52.0,
- 1401360045
- ],
- [
- 53.8666666667,
- 1401360060
- ],
- [
- 54.0,
- 1401360075
- ],
- [
- 54.0,
- 1401360090
- ],
- [
- 55.0,
- 1401360105
- ],
- [
- 54.0,
- 1401360120
- ],
- [
- 54.0,
- 1401360135
- ],
- [
- 53.0,
- 1401360150
- ],
- [
- 53.9333333333,
- 1401360165
- ],
- [
- 54.0,
- 1401360180
- ],
- [
- 54.0,
- 1401360195
- ],
- [
- 53.1333333333,
- 1401360210
- ],
- [
- 53.8666666667,
- 1401360225
- ],
- [
- 54.0,
- 1401360240
- ],
- [
- 54.0,
- 1401360255
- ],
- [
- 54.0,
- 1401360270
- ],
- [
- 54.8666666667,
- 1401360285
- ],
- [
- 54.0666666667,
- 1401360300
- ],
- [
- 54.0,
- 1401360315
- ],
- [
- 54.0,
- 1401360330
- ],
- [
- 54.0,
- 1401360345
- ],
- [
- 54.0,
- 1401360360
- ],
- [
- 54.0,
- 1401360375
- ],
- [
- 54.0,
- 1401360390
- ],
- [
- 54.8666666667,
- 1401360405
- ],
- [
- 54.1333333333,
- 1401360420
- ],
- [
- 54.0,
- 1401360435
- ],
- [
- 54.0,
- 1401360450
- ],
- [
- 54.0,
- 1401360465
- ],
- [
- 54.0,
- 1401360480
- ],
- [
- 53.2,
- 1401360495
- ],
- [
- 53.8,
- 1401360510
- ],
- [
- 54.0,
- 1401360525
- ],
- [
- 54.0,
- 1401360540
- ],
- [
- 54.0,
- 1401360555
- ],
- [
- 54.0,
- 1401360570
- ],
- [
- 54.0,
- 1401360585
- ],
- [
- 54.0,
- 1401360600
- ],
- [
- 53.2,
- 1401360615
- ],
- [
- 53.8,
- 1401360630
- ],
- [
- 54.0,
- 1401360645
- ],
- [
- 54.0,
- 1401360660
- ],
- [
- 54.0,
- 1401360675
- ],
- [
- 54.0,
- 1401360690
- ],
- [
- 54.0,
- 1401360705
- ],
- [
- 54.0,
- 1401360720
- ],
- [
- 54.0,
- 1401360735
- ],
- [
- 54.0,
- 1401360750
- ],
- [
- 54.0,
- 1401360765
- ],
- [
- 54.0,
- 1401360780
- ],
- [
- 54.0,
- 1401360795
- ],
- [
- 54.0,
- 1401360810
- ],
- [
- 54.0,
- 1401360825
- ],
- [
- 54.0,
- 1401360840
- ],
- [
- 54.0,
- 1401360855
- ],
- [
- 54.0,
- 1401360870
- ],
- [
- 54.0,
- 1401360885
- ],
- [
- 54.0,
- 1401360900
- ],
- [
- 53.2666666667,
- 1401360915
- ],
- [
- 53.7333333333,
- 1401360930
- ],
- [
- 54.0,
- 1401360945
- ],
- [
- 54.0,
- 1401360960
- ],
- [
- 54.0,
- 1401360975
- ],
- [
- 54.0,
- 1401360990
- ],
- [
- 54.0,
- 1401361005
- ],
- [
- 54.0,
- 1401361020
- ],
- [
- 54.0,
- 1401361035
- ],
- [
- 54.0,
- 1401361050
- ],
- [
- 54.0,
- 1401361065
- ],
- [
- 54.8,
- 1401361080
- ],
- [
- 55.0,
- 1401361095
- ],
- [
- 54.2,
- 1401361110
- ],
- [
- 54.0,
- 1401361125
- ],
- [
- 54.0,
- 1401361140
- ],
- [
- 54.0,
- 1401361155
- ],
- [
- 54.0,
- 1401361170
- ],
- [
- 54.0,
- 1401361185
- ],
- [
- 54.0,
- 1401361200
- ],
- [
- 54.0,
- 1401361215
- ],
- [
- 54.0,
- 1401361230
- ],
- [
- 54.7333333333,
- 1401361245
- ],
- [
- 55.0,
- 1401361260
- ],
- [
- 55.0,
- 1401361275
- ],
- [
- 54.2666666667,
- 1401361290
- ],
- [
- 54.0,
- 1401361305
- ],
- [
- 54.0,
- 1401361320
- ],
- [
- 54.0,
- 1401361335
- ],
- [
- 54.0,
- 1401361350
- ],
- [
- 54.0,
- 1401361365
- ],
- [
- 54.7333333333,
- 1401361380
- ],
- [
- 55.0,
- 1401361395
- ],
- [
- 54.2666666667,
- 1401361410
- ],
- [
- 54.0,
- 1401361425
- ],
- [
- 54.0,
- 1401361440
- ],
- [
- 54.0,
- 1401361455
- ],
- [
- 54.0,
- 1401361470
- ],
- [
- 54.0,
- 1401361485
- ],
- [
- 54.0,
- 1401361500
- ],
- [
- 54.0,
- 1401361515
- ],
- [
- 54.0,
- 1401361530
- ],
- [
- 54.0,
- 1401361545
- ],
- [
- 54.0,
- 1401361560
- ],
- [
- 54.0,
- 1401361575
- ],
- [
- 54.0,
- 1401361590
- ],
- [
- 54.0,
- 1401361605
- ],
- [
- 54.0,
- 1401361620
- ],
- [
- 54.0,
- 1401361635
- ],
- [
- 54.0,
- 1401361650
- ],
- [
- 54.0,
- 1401361665
- ],
- [
- 54.0,
- 1401361680
- ],
- [
- 54.0,
- 1401361695
- ],
- [
- 54.0,
- 1401361710
- ],
- [
- 53.2666666667,
- 1401361725
- ],
- [
- 53.7333333333,
- 1401361740
- ],
- [
- 54.0,
- 1401361755
- ],
- [
- 54.0,
- 1401361770
- ],
- [
- 54.0,
- 1401361785
- ],
- [
- 54.0,
- 1401361800
- ],
- [
- 54.0,
- 1401361815
- ],
- [
- 54.0,
- 1401361830
- ],
- [
- 54.0,
- 1401361845
- ],
- [
- 54.0,
- 1401361860
- ],
- [
- 54.0,
- 1401361875
- ],
- [
- 54.0,
- 1401361890
- ],
- [
- 54.0,
- 1401361905
- ],
- [
- 54.0,
- 1401361920
- ],
- [
- 54.0,
- 1401361935
- ],
- [
- 54.0,
- 1401361950
- ],
- [
- 54.0,
- 1401361965
- ],
- [
- 54.0,
- 1401361980
- ],
- [
- 54.0,
- 1401361995
- ],
- [
- 54.0,
- 1401362010
- ],
- [
- 54.0,
- 1401362025
- ],
- [
- 54.0,
- 1401362040
- ],
- [
- 54.0,
- 1401362055
- ],
- [
- 54.0,
- 1401362070
- ],
- [
- 54.0,
- 1401362085
- ],
- [
- 54.0,
- 1401362100
- ],
- [
- 54.0,
- 1401362115
- ],
- [
- 54.0,
- 1401362130
- ],
- [
- 54.0,
- 1401362145
- ],
- [
- 54.0,
- 1401362160
- ],
- [
- 54.0,
- 1401362175
- ],
- [
- 54.7333333333,
- 1401362190
- ],
- [
- 55.0,
- 1401362205
- ],
- [
- 55.0,
- 1401362220
- ],
- [
- 54.2,
- 1401362235
- ],
- [
- 54.0,
- 1401362250
- ],
- [
- 54.0,
- 1401362265
- ],
- [
- 54.0,
- 1401362280
- ],
- [
- 54.0,
- 1401362295
- ],
- [
- 54.0,
- 1401362310
- ],
- [
- 54.0,
- 1401362325
- ],
- [
- 54.0,
- 1401362340
- ],
- [
- 54.0,
- 1401362355
- ],
- [
- 54.0,
- 1401362370
- ],
- [
- 54.0,
- 1401362385
- ],
- [
- 54.0,
- 1401362400
- ],
- [
- 54.0,
- 1401362415
- ],
- [
- 54.0,
- 1401362430
- ],
- [
- 54.0,
- 1401362445
- ],
- [
- 54.0,
- 1401362460
- ],
- [
- 54.0,
- 1401362475
- ],
- [
- 54.0,
- 1401362490
- ],
- [
- 54.0,
- 1401362505
- ],
- [
- 54.0,
- 1401362520
- ],
- [
- 54.0,
- 1401362535
- ],
- [
- 54.0,
- 1401362550
- ],
- [
- 54.0,
- 1401362565
- ],
- [
- 54.0,
- 1401362580
- ],
- [
- 54.0,
- 1401362595
- ],
- [
- 54.0,
- 1401362610
- ],
- [
- 54.0,
- 1401362625
- ],
- [
- 54.6666666667,
- 1401362640
- ],
- [
- 55.0,
- 1401362655
- ],
- [
- 54.2666666667,
- 1401362670
- ],
- [
- 54.0,
- 1401362685
- ]
- ],
- "threadsWaiting" : [
- [
- 4.0,
- 1401359115
- ],
- [
- 4.0,
- 1401359130
- ],
- [
- 4.0,
- 1401359145
- ],
- [
- 4.0,
- 1401359160
- ],
- [
- 4.0,
- 1401359175
- ],
- [
- 4.0,
- 1401359190
- ],
- [
- 4.0,
- 1401359205
- ],
- [
- 4.0,
- 1401359220
- ],
- [
- 4.0,
- 1401359235
- ],
- [
- 4.0,
- 1401359250
- ],
- [
- 4.0,
- 1401359265
- ],
- [
- 4.0,
- 1401359280
- ],
- [
- 4.0,
- 1401359295
- ],
- [
- 4.0,
- 1401359310
- ],
- [
- 4.0,
- 1401359325
- ],
- [
- 4.0,
- 1401359340
- ],
- [
- 4.0,
- 1401359355
- ],
- [
- 4.0,
- 1401359370
- ],
- [
- 4.0,
- 1401359385
- ],
- [
- 4.0,
- 1401359400
- ],
- [
- 4.0,
- 1401359415
- ],
- [
- 4.0,
- 1401359430
- ],
- [
- 4.0,
- 1401359445
- ],
- [
- 4.0,
- 1401359460
- ],
- [
- 4.0,
- 1401359475
- ],
- [
- 4.0,
- 1401359490
- ],
- [
- 4.0,
- 1401359505
- ],
- [
- 4.0,
- 1401359520
- ],
- [
- 4.0,
- 1401359535
- ],
- [
- 4.0,
- 1401359550
- ],
- [
- 4.0,
- 1401359565
- ],
- [
- 4.0,
- 1401359580
- ],
- [
- 4.0,
- 1401359595
- ],
- [
- 4.0,
- 1401359610
- ],
- [
- 4.0,
- 1401359625
- ],
- [
- 4.0,
- 1401359640
- ],
- [
- 4.0,
- 1401359655
- ],
- [
- 4.0,
- 1401359670
- ],
- [
- 4.0,
- 1401359685
- ],
- [
- 4.0,
- 1401359700
- ],
- [
- 4.0,
- 1401359715
- ],
- [
- 4.0,
- 1401359730
- ],
- [
- 4.0,
- 1401359745
- ],
- [
- 4.0,
- 1401359760
- ],
- [
- 4.0,
- 1401359775
- ],
- [
- 4.0,
- 1401359790
- ],
- [
- 4.0,
- 1401359805
- ],
- [
- 4.0,
- 1401359820
- ],
- [
- 4.0,
- 1401359835
- ],
- [
- 4.0,
- 1401359850
- ],
- [
- 4.0,
- 1401359865
- ],
- [
- 4.0,
- 1401359880
- ],
- [
- 4.0,
- 1401359895
- ],
- [
- 4.0,
- 1401359910
- ],
- [
- 4.0,
- 1401359925
- ],
- [
- 4.0,
- 1401359940
- ],
- [
- 4.0,
- 1401359955
- ],
- [
- 4.0,
- 1401359970
- ],
- [
- 4.0,
- 1401359985
- ],
- [
- 4.0,
- 1401360000
- ],
- [
- 4.0,
- 1401360015
- ],
- [
- 4.0,
- 1401360030
- ],
- [
- 4.0,
- 1401360045
- ],
- [
- 4.0,
- 1401360060
- ],
- [
- 4.0,
- 1401360075
- ],
- [
- 4.0,
- 1401360090
- ],
- [
- 4.0,
- 1401360105
- ],
- [
- 4.0,
- 1401360120
- ],
- [
- 4.0,
- 1401360135
- ],
- [
- 4.0,
- 1401360150
- ],
- [
- 4.0,
- 1401360165
- ],
- [
- 4.0,
- 1401360180
- ],
- [
- 4.0,
- 1401360195
- ],
- [
- 4.0,
- 1401360210
- ],
- [
- 4.0,
- 1401360225
- ],
- [
- 4.0,
- 1401360240
- ],
- [
- 4.0,
- 1401360255
- ],
- [
- 4.0,
- 1401360270
- ],
- [
- 4.0,
- 1401360285
- ],
- [
- 4.0,
- 1401360300
- ],
- [
- 4.0,
- 1401360315
- ],
- [
- 4.0,
- 1401360330
- ],
- [
- 4.0,
- 1401360345
- ],
- [
- 4.0,
- 1401360360
- ],
- [
- 4.0,
- 1401360375
- ],
- [
- 4.0,
- 1401360390
- ],
- [
- 4.0,
- 1401360405
- ],
- [
- 4.0,
- 1401360420
- ],
- [
- 4.0,
- 1401360435
- ],
- [
- 4.0,
- 1401360450
- ],
- [
- 4.0,
- 1401360465
- ],
- [
- 4.0,
- 1401360480
- ],
- [
- 4.0,
- 1401360495
- ],
- [
- 4.0,
- 1401360510
- ],
- [
- 4.0,
- 1401360525
- ],
- [
- 4.0,
- 1401360540
- ],
- [
- 4.0,
- 1401360555
- ],
- [
- 4.0,
- 1401360570
- ],
- [
- 4.0,
- 1401360585
- ],
- [
- 4.0,
- 1401360600
- ],
- [
- 4.0,
- 1401360615
- ],
- [
- 4.0,
- 1401360630
- ],
- [
- 4.0,
- 1401360645
- ],
- [
- 4.0,
- 1401360660
- ],
- [
- 4.0,
- 1401360675
- ],
- [
- 4.0,
- 1401360690
- ],
- [
- 4.0,
- 1401360705
- ],
- [
- 4.0,
- 1401360720
- ],
- [
- 4.0,
- 1401360735
- ],
- [
- 4.0,
- 1401360750
- ],
- [
- 4.0,
- 1401360765
- ],
- [
- 4.0,
- 1401360780
- ],
- [
- 4.0,
- 1401360795
- ],
- [
- 4.0,
- 1401360810
- ],
- [
- 4.0,
- 1401360825
- ],
- [
- 4.0,
- 1401360840
- ],
- [
- 4.0,
- 1401360855
- ],
- [
- 4.0,
- 1401360870
- ],
- [
- 4.0,
- 1401360885
- ],
- [
- 4.0,
- 1401360900
- ],
- [
- 4.0,
- 1401360915
- ],
- [
- 4.0,
- 1401360930
- ],
- [
- 4.0,
- 1401360945
- ],
- [
- 4.0,
- 1401360960
- ],
- [
- 4.0,
- 1401360975
- ],
- [
- 4.0,
- 1401360990
- ],
- [
- 4.0,
- 1401361005
- ],
- [
- 4.0,
- 1401361020
- ],
- [
- 4.0,
- 1401361035
- ],
- [
- 4.0,
- 1401361050
- ],
- [
- 4.0,
- 1401361065
- ],
- [
- 4.0,
- 1401361080
- ],
- [
- 4.0,
- 1401361095
- ],
- [
- 4.0,
- 1401361110
- ],
- [
- 4.0,
- 1401361125
- ],
- [
- 4.0,
- 1401361140
- ],
- [
- 4.0,
- 1401361155
- ],
- [
- 4.0,
- 1401361170
- ],
- [
- 4.0,
- 1401361185
- ],
- [
- 4.0,
- 1401361200
- ],
- [
- 4.0,
- 1401361215
- ],
- [
- 4.0,
- 1401361230
- ],
- [
- 4.0,
- 1401361245
- ],
- [
- 4.0,
- 1401361260
- ],
- [
- 4.0,
- 1401361275
- ],
- [
- 4.0,
- 1401361290
- ],
- [
- 4.0,
- 1401361305
- ],
- [
- 4.0,
- 1401361320
- ],
- [
- 4.0,
- 1401361335
- ],
- [
- 4.0,
- 1401361350
- ],
- [
- 4.0,
- 1401361365
- ],
- [
- 4.0,
- 1401361380
- ],
- [
- 4.0,
- 1401361395
- ],
- [
- 4.0,
- 1401361410
- ],
- [
- 4.0,
- 1401361425
- ],
- [
- 4.0,
- 1401361440
- ],
- [
- 4.0,
- 1401361455
- ],
- [
- 4.0,
- 1401361470
- ],
- [
- 4.0,
- 1401361485
- ],
- [
- 4.0,
- 1401361500
- ],
- [
- 4.0,
- 1401361515
- ],
- [
- 4.0,
- 1401361530
- ],
- [
- 4.0,
- 1401361545
- ],
- [
- 4.0,
- 1401361560
- ],
- [
- 4.0,
- 1401361575
- ],
- [
- 4.0,
- 1401361590
- ],
- [
- 4.0,
- 1401361605
- ],
- [
- 4.0,
- 1401361620
- ],
- [
- 4.0,
- 1401361635
- ],
- [
- 4.0,
- 1401361650
- ],
- [
- 4.0,
- 1401361665
- ],
- [
- 4.0,
- 1401361680
- ],
- [
- 4.0,
- 1401361695
- ],
- [
- 4.0,
- 1401361710
- ],
- [
- 4.0,
- 1401361725
- ],
- [
- 4.0,
- 1401361740
- ],
- [
- 4.0,
- 1401361755
- ],
- [
- 4.0,
- 1401361770
- ],
- [
- 4.0,
- 1401361785
- ],
- [
- 4.0,
- 1401361800
- ],
- [
- 4.0,
- 1401361815
- ],
- [
- 4.0,
- 1401361830
- ],
- [
- 4.0,
- 1401361845
- ],
- [
- 4.0,
- 1401361860
- ],
- [
- 4.0,
- 1401361875
- ],
- [
- 4.0,
- 1401361890
- ],
- [
- 4.0,
- 1401361905
- ],
- [
- 4.0,
- 1401361920
- ],
- [
- 4.0,
- 1401361935
- ],
- [
- 4.0,
- 1401361950
- ],
- [
- 4.0,
- 1401361965
- ],
- [
- 4.0,
- 1401361980
- ],
- [
- 4.0,
- 1401361995
- ],
- [
- 4.0,
- 1401362010
- ],
- [
- 4.0,
- 1401362025
- ],
- [
- 4.0,
- 1401362040
- ],
- [
- 4.0,
- 1401362055
- ],
- [
- 4.0,
- 1401362070
- ],
- [
- 4.0,
- 1401362085
- ],
- [
- 4.0,
- 1401362100
- ],
- [
- 4.0,
- 1401362115
- ],
- [
- 4.0,
- 1401362130
- ],
- [
- 4.0,
- 1401362145
- ],
- [
- 4.0,
- 1401362160
- ],
- [
- 4.0,
- 1401362175
- ],
- [
- 4.0,
- 1401362190
- ],
- [
- 4.0,
- 1401362205
- ],
- [
- 4.0,
- 1401362220
- ],
- [
- 4.0,
- 1401362235
- ],
- [
- 4.0,
- 1401362250
- ],
- [
- 4.0,
- 1401362265
- ],
- [
- 4.0,
- 1401362280
- ],
- [
- 4.0,
- 1401362295
- ],
- [
- 4.0,
- 1401362310
- ],
- [
- 4.0,
- 1401362325
- ],
- [
- 4.0,
- 1401362340
- ],
- [
- 4.0,
- 1401362355
- ],
- [
- 4.0,
- 1401362370
- ],
- [
- 4.0,
- 1401362385
- ],
- [
- 4.0,
- 1401362400
- ],
- [
- 4.0,
- 1401362415
- ],
- [
- 4.0,
- 1401362430
- ],
- [
- 4.0,
- 1401362445
- ],
- [
- 4.0,
- 1401362460
- ],
- [
- 4.0,
- 1401362475
- ],
- [
- 4.0,
- 1401362490
- ],
- [
- 4.0,
- 1401362505
- ],
- [
- 4.0,
- 1401362520
- ],
- [
- 4.0,
- 1401362535
- ],
- [
- 4.0,
- 1401362550
- ],
- [
- 4.0,
- 1401362565
- ],
- [
- 4.0,
- 1401362580
- ],
- [
- 4.0,
- 1401362595
- ],
- [
- 4.0,
- 1401362610
- ],
- [
- 4.0,
- 1401362625
- ],
- [
- 4.0,
- 1401362640
- ],
- [
- 4.0,
- 1401362655
- ],
- [
- 4.0,
- 1401362670
- ],
- [
- 4.0,
- 1401362685
- ]
- ]
- }
- }
-}
[6/8] Revert "AMBARI-5928. Create and populate Metrics section of a
slider app. (onechiporenko)" - changes made in ambari-web
Posted by sr...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/ambari-web/contrib/views/slider/src/main/resources/ui/app/assets/data/metrics/metric3.json
----------------------------------------------------------------------
diff --git a/ambari-web/contrib/views/slider/src/main/resources/ui/app/assets/data/metrics/metric3.json b/ambari-web/contrib/views/slider/src/main/resources/ui/app/assets/data/metrics/metric3.json
deleted file mode 100644
index 83b4121..0000000
--- a/ambari-web/contrib/views/slider/src/main/resources/ui/app/assets/data/metrics/metric3.json
+++ /dev/null
@@ -1,1856 +0,0 @@
-{
- "metrics" : {
- "dfs" : {
- "namenode" : {
- "CreateFileOps" : [
- [
- 0.0,
- 1401359340
- ],
- [
- 0.0,
- 1401359355
- ],
- [
- 0.0,
- 1401359370
- ],
- [
- 0.0,
- 1401359385
- ],
- [
- 0.0,
- 1401359400
- ],
- [
- 0.0,
- 1401359415
- ],
- [
- 0.0,
- 1401359430
- ],
- [
- 0.0,
- 1401359445
- ],
- [
- 0.0,
- 1401359460
- ],
- [
- 0.0,
- 1401359475
- ],
- [
- 0.0,
- 1401359490
- ],
- [
- 0.0,
- 1401359505
- ],
- [
- 0.0,
- 1401359520
- ],
- [
- 0.0,
- 1401359535
- ],
- [
- 0.0,
- 1401359550
- ],
- [
- 0.0,
- 1401359565
- ],
- [
- 0.0,
- 1401359580
- ],
- [
- 0.0,
- 1401359595
- ],
- [
- 0.0,
- 1401359610
- ],
- [
- 0.0,
- 1401359625
- ],
- [
- 0.0,
- 1401359640
- ],
- [
- 0.0,
- 1401359655
- ],
- [
- 0.0,
- 1401359670
- ],
- [
- 0.0,
- 1401359685
- ],
- [
- 0.0,
- 1401359700
- ],
- [
- 0.0,
- 1401359715
- ],
- [
- 0.0,
- 1401359730
- ],
- [
- 0.0,
- 1401359745
- ],
- [
- 0.0,
- 1401359760
- ],
- [
- 0.0,
- 1401359775
- ],
- [
- 0.0,
- 1401359790
- ],
- [
- 0.0,
- 1401359805
- ],
- [
- 0.0,
- 1401359820
- ],
- [
- 0.0,
- 1401359835
- ],
- [
- 0.0,
- 1401359850
- ],
- [
- 0.0,
- 1401359865
- ],
- [
- 0.0,
- 1401359880
- ],
- [
- 0.0,
- 1401359895
- ],
- [
- 0.0,
- 1401359910
- ],
- [
- 0.0,
- 1401359925
- ],
- [
- 0.0,
- 1401359940
- ],
- [
- 0.0,
- 1401359955
- ],
- [
- 0.0,
- 1401359970
- ],
- [
- 0.0,
- 1401359985
- ],
- [
- 0.0,
- 1401360000
- ],
- [
- 0.0,
- 1401360015
- ],
- [
- 0.0,
- 1401360030
- ],
- [
- 0.0,
- 1401360045
- ],
- [
- 0.0,
- 1401360060
- ],
- [
- 0.0,
- 1401360075
- ],
- [
- 0.0,
- 1401360090
- ],
- [
- 0.0,
- 1401360105
- ],
- [
- 0.0,
- 1401360120
- ],
- [
- 0.0,
- 1401360135
- ],
- [
- 0.0,
- 1401360150
- ],
- [
- 0.0,
- 1401360165
- ],
- [
- 0.0,
- 1401360180
- ],
- [
- 0.0,
- 1401360195
- ],
- [
- 0.0,
- 1401360210
- ],
- [
- 0.0,
- 1401360225
- ],
- [
- 0.0,
- 1401360240
- ],
- [
- 0.0,
- 1401360255
- ],
- [
- 0.0,
- 1401360270
- ],
- [
- 0.0,
- 1401360285
- ],
- [
- 0.0,
- 1401360300
- ],
- [
- 0.0,
- 1401360315
- ],
- [
- 0.0,
- 1401360330
- ],
- [
- 0.0,
- 1401360345
- ],
- [
- 0.0,
- 1401360360
- ],
- [
- 0.0,
- 1401360375
- ],
- [
- 0.0,
- 1401360390
- ],
- [
- 0.0,
- 1401360405
- ],
- [
- 0.0,
- 1401360420
- ],
- [
- 0.0,
- 1401360435
- ],
- [
- 0.0,
- 1401360450
- ],
- [
- 0.0,
- 1401360465
- ],
- [
- 0.0,
- 1401360480
- ],
- [
- 0.0,
- 1401360495
- ],
- [
- 0.0,
- 1401360510
- ],
- [
- 0.0,
- 1401360525
- ],
- [
- 0.0,
- 1401360540
- ],
- [
- 0.0,
- 1401360555
- ],
- [
- 0.0,
- 1401360570
- ],
- [
- 0.0,
- 1401360585
- ],
- [
- 0.0,
- 1401360600
- ],
- [
- 0.0,
- 1401360615
- ],
- [
- 0.0,
- 1401360630
- ],
- [
- 0.0,
- 1401360645
- ],
- [
- 0.0,
- 1401360660
- ],
- [
- 0.0,
- 1401360675
- ],
- [
- 0.0,
- 1401360690
- ],
- [
- 0.0,
- 1401360705
- ],
- [
- 0.0,
- 1401360720
- ],
- [
- 0.0,
- 1401360735
- ],
- [
- 0.0,
- 1401360750
- ],
- [
- 0.0,
- 1401360765
- ],
- [
- 0.0,
- 1401360780
- ],
- [
- 0.0,
- 1401360795
- ],
- [
- 0.0,
- 1401360810
- ],
- [
- 0.0,
- 1401360825
- ],
- [
- 0.0,
- 1401360840
- ],
- [
- 0.0,
- 1401360855
- ],
- [
- 0.0,
- 1401360870
- ],
- [
- 0.0,
- 1401360885
- ],
- [
- 0.0,
- 1401360900
- ],
- [
- 0.0,
- 1401360915
- ],
- [
- 0.0,
- 1401360930
- ],
- [
- 0.0,
- 1401360945
- ],
- [
- 0.0,
- 1401360960
- ],
- [
- 0.0,
- 1401360975
- ],
- [
- 0.0,
- 1401360990
- ],
- [
- 0.0,
- 1401361005
- ],
- [
- 0.0,
- 1401361020
- ],
- [
- 0.0,
- 1401361035
- ],
- [
- 0.0,
- 1401361050
- ],
- [
- 0.0,
- 1401361065
- ],
- [
- 0.0,
- 1401361080
- ],
- [
- 0.0,
- 1401361095
- ],
- [
- 0.0,
- 1401361110
- ],
- [
- 0.0,
- 1401361125
- ],
- [
- 0.0,
- 1401361140
- ],
- [
- 0.0,
- 1401361155
- ],
- [
- 0.0,
- 1401361170
- ],
- [
- 0.0,
- 1401361185
- ],
- [
- 0.0,
- 1401361200
- ],
- [
- 0.0,
- 1401361215
- ],
- [
- 0.0,
- 1401361230
- ],
- [
- 0.0,
- 1401361245
- ],
- [
- 0.0,
- 1401361260
- ],
- [
- 0.0,
- 1401361275
- ],
- [
- 0.0,
- 1401361290
- ],
- [
- 0.0,
- 1401361305
- ],
- [
- 0.0,
- 1401361320
- ],
- [
- 0.0,
- 1401361335
- ],
- [
- 0.0,
- 1401361350
- ],
- [
- 0.0,
- 1401361365
- ],
- [
- 0.0,
- 1401361380
- ],
- [
- 0.0,
- 1401361395
- ],
- [
- 0.0,
- 1401361410
- ],
- [
- 0.0,
- 1401361425
- ],
- [
- 0.0,
- 1401361440
- ],
- [
- 0.0,
- 1401361455
- ],
- [
- 0.0,
- 1401361470
- ],
- [
- 0.0,
- 1401361485
- ],
- [
- 0.0,
- 1401361500
- ],
- [
- 0.0,
- 1401361515
- ],
- [
- 0.0,
- 1401361530
- ],
- [
- 0.0,
- 1401361545
- ],
- [
- 0.0,
- 1401361560
- ],
- [
- 0.0,
- 1401361575
- ],
- [
- 0.0,
- 1401361590
- ],
- [
- 0.0,
- 1401361605
- ],
- [
- 0.0,
- 1401361620
- ],
- [
- 0.0,
- 1401361635
- ],
- [
- 0.0,
- 1401361650
- ],
- [
- 0.0,
- 1401361665
- ],
- [
- 0.0,
- 1401361680
- ],
- [
- 0.0,
- 1401361695
- ],
- [
- 0.0,
- 1401361710
- ],
- [
- 0.0,
- 1401361725
- ],
- [
- 0.0,
- 1401361740
- ],
- [
- 0.0,
- 1401361755
- ],
- [
- 0.0,
- 1401361770
- ],
- [
- 0.0,
- 1401361785
- ],
- [
- 0.0,
- 1401361800
- ],
- [
- 0.0,
- 1401361815
- ],
- [
- 0.0,
- 1401361830
- ],
- [
- 0.0,
- 1401361845
- ],
- [
- 0.0,
- 1401361860
- ],
- [
- 0.0,
- 1401361875
- ],
- [
- 0.0,
- 1401361890
- ],
- [
- 0.0,
- 1401361905
- ],
- [
- 0.0,
- 1401361920
- ],
- [
- 0.0,
- 1401361935
- ],
- [
- 0.08,
- 1401361950
- ],
- [
- 0.0533333333333,
- 1401361965
- ],
- [
- 0.0,
- 1401361980
- ],
- [
- 0.0,
- 1401361995
- ],
- [
- 0.0,
- 1401362010
- ],
- [
- 0.0,
- 1401362025
- ],
- [
- 0.0,
- 1401362040
- ],
- [
- 0.0,
- 1401362055
- ],
- [
- 0.0,
- 1401362070
- ],
- [
- 0.0,
- 1401362085
- ],
- [
- 0.0,
- 1401362100
- ],
- [
- 0.0,
- 1401362115
- ],
- [
- 0.0,
- 1401362130
- ],
- [
- 0.0,
- 1401362145
- ],
- [
- 0.0,
- 1401362160
- ],
- [
- 0.0,
- 1401362175
- ],
- [
- 0.0,
- 1401362190
- ],
- [
- 0.0,
- 1401362205
- ],
- [
- 0.0,
- 1401362220
- ],
- [
- 0.0,
- 1401362235
- ],
- [
- 0.0,
- 1401362250
- ],
- [
- 0.0,
- 1401362265
- ],
- [
- 0.0,
- 1401362280
- ],
- [
- 0.0,
- 1401362295
- ],
- [
- 0.0,
- 1401362310
- ],
- [
- 0.0,
- 1401362325
- ],
- [
- 0.0,
- 1401362340
- ],
- [
- 0.0,
- 1401362355
- ],
- [
- 0.0,
- 1401362370
- ],
- [
- 0.0,
- 1401362385
- ],
- [
- 0.0,
- 1401362400
- ],
- [
- 0.0,
- 1401362415
- ],
- [
- 0.0,
- 1401362430
- ],
- [
- 0.0,
- 1401362445
- ],
- [
- 0.0,
- 1401362460
- ],
- [
- 0.0,
- 1401362475
- ],
- [
- 0.0,
- 1401362490
- ],
- [
- 0.0,
- 1401362505
- ],
- [
- 0.0,
- 1401362520
- ],
- [
- 0.0,
- 1401362535
- ],
- [
- 0.0,
- 1401362550
- ],
- [
- 0.0,
- 1401362565
- ],
- [
- 0.0,
- 1401362580
- ],
- [
- 0.0,
- 1401362595
- ],
- [
- 0.0,
- 1401362610
- ],
- [
- 0.0,
- 1401362625
- ],
- [
- 0.0,
- 1401362640
- ],
- [
- 0.0,
- 1401362655
- ],
- [
- 0.0,
- 1401362670
- ],
- [
- 0.0,
- 1401362685
- ]
- ],
- "FileInfoOps" : [
- [
- 0.0,
- 1401359340
- ],
- [
- 0.0,
- 1401359355
- ],
- [
- 0.0,
- 1401359370
- ],
- [
- 0.0,
- 1401359385
- ],
- [
- 0.0,
- 1401359400
- ],
- [
- 0.0,
- 1401359415
- ],
- [
- 0.0,
- 1401359430
- ],
- [
- 0.0,
- 1401359445
- ],
- [
- 0.0,
- 1401359460
- ],
- [
- 0.0,
- 1401359475
- ],
- [
- 0.0,
- 1401359490
- ],
- [
- 0.0,
- 1401359505
- ],
- [
- 0.0177777777778,
- 1401359520
- ],
- [
- 0.115555555556,
- 1401359535
- ],
- [
- 0.0,
- 1401359550
- ],
- [
- 0.0,
- 1401359565
- ],
- [
- 0.0,
- 1401359580
- ],
- [
- 0.0,
- 1401359595
- ],
- [
- 0.0,
- 1401359610
- ],
- [
- 0.0,
- 1401359625
- ],
- [
- 0.0,
- 1401359640
- ],
- [
- 0.0,
- 1401359655
- ],
- [
- 0.0,
- 1401359670
- ],
- [
- 0.0,
- 1401359685
- ],
- [
- 0.0,
- 1401359700
- ],
- [
- 0.0,
- 1401359715
- ],
- [
- 0.0,
- 1401359730
- ],
- [
- 0.0,
- 1401359745
- ],
- [
- 0.0,
- 1401359760
- ],
- [
- 0.0,
- 1401359775
- ],
- [
- 0.0,
- 1401359790
- ],
- [
- 0.0,
- 1401359805
- ],
- [
- 0.025,
- 1401359820
- ],
- [
- 0.108333333333,
- 1401359835
- ],
- [
- 0.0,
- 1401359850
- ],
- [
- 0.0,
- 1401359865
- ],
- [
- 0.0,
- 1401359880
- ],
- [
- 0.0,
- 1401359895
- ],
- [
- 0.0,
- 1401359910
- ],
- [
- 0.0,
- 1401359925
- ],
- [
- 0.0,
- 1401359940
- ],
- [
- 0.0,
- 1401359955
- ],
- [
- 0.0,
- 1401359970
- ],
- [
- 0.0,
- 1401359985
- ],
- [
- 0.0,
- 1401360000
- ],
- [
- 0.0,
- 1401360015
- ],
- [
- 0.0,
- 1401360030
- ],
- [
- 0.0,
- 1401360045
- ],
- [
- 0.0,
- 1401360060
- ],
- [
- 0.0,
- 1401360075
- ],
- [
- 0.0,
- 1401360090
- ],
- [
- 0.0,
- 1401360105
- ],
- [
- 0.0,
- 1401360120
- ],
- [
- 0.133333333333,
- 1401360135
- ],
- [
- 0.0,
- 1401360150
- ],
- [
- 0.0,
- 1401360165
- ],
- [
- 0.0,
- 1401360180
- ],
- [
- 0.0,
- 1401360195
- ],
- [
- 0.0,
- 1401360210
- ],
- [
- 0.0,
- 1401360225
- ],
- [
- 0.0,
- 1401360240
- ],
- [
- 0.0,
- 1401360255
- ],
- [
- 0.0,
- 1401360270
- ],
- [
- 0.0,
- 1401360285
- ],
- [
- 0.0,
- 1401360300
- ],
- [
- 0.0,
- 1401360315
- ],
- [
- 0.0,
- 1401360330
- ],
- [
- 0.0,
- 1401360345
- ],
- [
- 0.0,
- 1401360360
- ],
- [
- 0.0,
- 1401360375
- ],
- [
- 0.0,
- 1401360390
- ],
- [
- 0.0,
- 1401360405
- ],
- [
- 0.108333333333,
- 1401360420
- ],
- [
- 0.025,
- 1401360435
- ],
- [
- 0.0,
- 1401360450
- ],
- [
- 0.0,
- 1401360465
- ],
- [
- 0.0,
- 1401360480
- ],
- [
- 0.0,
- 1401360495
- ],
- [
- 0.0,
- 1401360510
- ],
- [
- 0.0,
- 1401360525
- ],
- [
- 0.0,
- 1401360540
- ],
- [
- 0.0,
- 1401360555
- ],
- [
- 0.0,
- 1401360570
- ],
- [
- 0.0,
- 1401360585
- ],
- [
- 0.0,
- 1401360600
- ],
- [
- 0.0,
- 1401360615
- ],
- [
- 0.0,
- 1401360630
- ],
- [
- 0.0,
- 1401360645
- ],
- [
- 0.0,
- 1401360660
- ],
- [
- 0.0,
- 1401360675
- ],
- [
- 0.0,
- 1401360690
- ],
- [
- 0.0,
- 1401360705
- ],
- [
- 0.0,
- 1401360720
- ],
- [
- 0.12380952381,
- 1401360735
- ],
- [
- 0.00952380952381,
- 1401360750
- ],
- [
- 0.0,
- 1401360765
- ],
- [
- 0.0,
- 1401360780
- ],
- [
- 0.0,
- 1401360795
- ],
- [
- 0.0,
- 1401360810
- ],
- [
- 0.0,
- 1401360825
- ],
- [
- 0.0,
- 1401360840
- ],
- [
- 0.0,
- 1401360855
- ],
- [
- 0.0,
- 1401360870
- ],
- [
- 0.0,
- 1401360885
- ],
- [
- 0.0,
- 1401360900
- ],
- [
- 0.0,
- 1401360915
- ],
- [
- 0.0,
- 1401360930
- ],
- [
- 0.0,
- 1401360945
- ],
- [
- 0.0,
- 1401360960
- ],
- [
- 0.0,
- 1401360975
- ],
- [
- 0.0,
- 1401360990
- ],
- [
- 0.0,
- 1401361005
- ],
- [
- 0.0,
- 1401361020
- ],
- [
- 0.115555555556,
- 1401361035
- ],
- [
- 0.0177777777778,
- 1401361050
- ],
- [
- 0.0,
- 1401361065
- ],
- [
- 0.0,
- 1401361080
- ],
- [
- 0.0,
- 1401361095
- ],
- [
- 0.0,
- 1401361110
- ],
- [
- 0.0,
- 1401361125
- ],
- [
- 0.0,
- 1401361140
- ],
- [
- 0.0,
- 1401361155
- ],
- [
- 0.0,
- 1401361170
- ],
- [
- 0.0,
- 1401361185
- ],
- [
- 0.0,
- 1401361200
- ],
- [
- 0.0,
- 1401361215
- ],
- [
- 0.0,
- 1401361230
- ],
- [
- 0.0,
- 1401361245
- ],
- [
- 0.0,
- 1401361260
- ],
- [
- 0.0,
- 1401361275
- ],
- [
- 0.0,
- 1401361290
- ],
- [
- 0.0,
- 1401361305
- ],
- [
- 0.0888888888889,
- 1401361320
- ],
- [
- 0.0444444444444,
- 1401361335
- ],
- [
- 0.0,
- 1401361350
- ],
- [
- 0.0,
- 1401361365
- ],
- [
- 0.0,
- 1401361380
- ],
- [
- 0.0,
- 1401361395
- ],
- [
- 0.0,
- 1401361410
- ],
- [
- 0.0,
- 1401361425
- ],
- [
- 0.0,
- 1401361440
- ],
- [
- 0.0,
- 1401361455
- ],
- [
- 0.0,
- 1401361470
- ],
- [
- 0.0,
- 1401361485
- ],
- [
- 0.0,
- 1401361500
- ],
- [
- 0.0,
- 1401361515
- ],
- [
- 0.0,
- 1401361530
- ],
- [
- 0.0,
- 1401361545
- ],
- [
- 0.0,
- 1401361560
- ],
- [
- 0.0,
- 1401361575
- ],
- [
- 0.0,
- 1401361590
- ],
- [
- 0.0,
- 1401361605
- ],
- [
- 0.075,
- 1401361620
- ],
- [
- 0.0583333333333,
- 1401361635
- ],
- [
- 0.0,
- 1401361650
- ],
- [
- 0.0,
- 1401361665
- ],
- [
- 0.0,
- 1401361680
- ],
- [
- 0.0,
- 1401361695
- ],
- [
- 0.0,
- 1401361710
- ],
- [
- 0.0,
- 1401361725
- ],
- [
- 0.0,
- 1401361740
- ],
- [
- 0.0,
- 1401361755
- ],
- [
- 0.0,
- 1401361770
- ],
- [
- 0.0,
- 1401361785
- ],
- [
- 0.0,
- 1401361800
- ],
- [
- 0.0,
- 1401361815
- ],
- [
- 0.0,
- 1401361830
- ],
- [
- 0.0,
- 1401361845
- ],
- [
- 0.0,
- 1401361860
- ],
- [
- 0.0,
- 1401361875
- ],
- [
- 0.0,
- 1401361890
- ],
- [
- 0.0,
- 1401361905
- ],
- [
- 0.08,
- 1401361920
- ],
- [
- 0.0533333333333,
- 1401361935
- ],
- [
- 0.24,
- 1401361950
- ],
- [
- 0.16,
- 1401361965
- ],
- [
- 0.0,
- 1401361980
- ],
- [
- 0.0,
- 1401361995
- ],
- [
- 0.0,
- 1401362010
- ],
- [
- 0.0,
- 1401362025
- ],
- [
- 0.0,
- 1401362040
- ],
- [
- 0.0,
- 1401362055
- ],
- [
- 0.0,
- 1401362070
- ],
- [
- 0.0,
- 1401362085
- ],
- [
- 0.0,
- 1401362100
- ],
- [
- 0.0,
- 1401362115
- ],
- [
- 0.0,
- 1401362130
- ],
- [
- 0.0,
- 1401362145
- ],
- [
- 0.0,
- 1401362160
- ],
- [
- 0.0,
- 1401362175
- ],
- [
- 0.0,
- 1401362190
- ],
- [
- 0.0,
- 1401362205
- ],
- [
- 0.106666666667,
- 1401362220
- ],
- [
- 0.0266666666667,
- 1401362235
- ],
- [
- 0.0,
- 1401362250
- ],
- [
- 0.0,
- 1401362265
- ],
- [
- 0.0,
- 1401362280
- ],
- [
- 0.0,
- 1401362295
- ],
- [
- 0.0,
- 1401362310
- ],
- [
- 0.0,
- 1401362325
- ],
- [
- 0.0,
- 1401362340
- ],
- [
- 0.0,
- 1401362355
- ],
- [
- 0.0,
- 1401362370
- ],
- [
- 0.0,
- 1401362385
- ],
- [
- 0.0,
- 1401362400
- ],
- [
- 0.0,
- 1401362415
- ],
- [
- 0.0,
- 1401362430
- ],
- [
- 0.0,
- 1401362445
- ],
- [
- 0.0,
- 1401362460
- ],
- [
- 0.0,
- 1401362475
- ],
- [
- 0.0,
- 1401362490
- ],
- [
- 0.0,
- 1401362505
- ],
- [
- 0.0,
- 1401362520
- ],
- [
- 0.115555555556,
- 1401362535
- ],
- [
- 0.0177777777778,
- 1401362550
- ],
- [
- 0.0,
- 1401362565
- ],
- [
- 0.106666666667,
- 1401362580
- ],
- [
- 0.0266666666667,
- 1401362595
- ],
- [
- 0.0,
- 1401362610
- ],
- [
- 0.0,
- 1401362625
- ],
- [
- 0.0,
- 1401362640
- ],
- [
- 0.0,
- 1401362655
- ],
- [
- 0.0,
- 1401362670
- ],
- [
- 0.0,
- 1401362685
- ],
- [
- 0.0,
- 1401362700
- ],
- [
- 0.0,
- 1401362715
- ],
- [
- 0.0,
- 1401362730
- ],
- [
- 0.0,
- 1401362745
- ],
- [
- 0.0,
- 1401362760
- ],
- [
- 0.0,
- 1401362775
- ],
- [
- 0.0,
- 1401362790
- ],
- [
- 0.0,
- 1401362805
- ],
- [
- 0.0888888888889,
- 1401362820
- ],
- [
- 0.0444444444444,
- 1401362835
- ],
- [
- 0.0,
- 1401362850
- ],
- [
- 0.0,
- 1401362865
- ],
- [
- 0.0,
- 1401362880
- ]
- ]
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/ambari-web/contrib/views/slider/src/main/resources/ui/app/assets/data/metrics/metric4.json
----------------------------------------------------------------------
diff --git a/ambari-web/contrib/views/slider/src/main/resources/ui/app/assets/data/metrics/metric4.json b/ambari-web/contrib/views/slider/src/main/resources/ui/app/assets/data/metrics/metric4.json
deleted file mode 100644
index ec74f7d..0000000
--- a/ambari-web/contrib/views/slider/src/main/resources/ui/app/assets/data/metrics/metric4.json
+++ /dev/null
@@ -1,968 +0,0 @@
-{
- "metrics" : {
- "rpc" : {
- "RpcQueueTime_avg_time" : [
- [
- 0.0,
- 1401359595
- ],
- [
- 0.0666666666667,
- 1401359610
- ],
- [
- 0.933333333333,
- 1401359625
- ],
- [
- 0.0333333333333,
- 1401359640
- ],
- [
- 0.466666666667,
- 1401359655
- ],
- [
- 0.0,
- 1401359670
- ],
- [
- 0.0666666666667,
- 1401359685
- ],
- [
- 0.933333333333,
- 1401359700
- ],
- [
- 0.477777777778,
- 1401359715
- ],
- [
- 0.466666666667,
- 1401359730
- ],
- [
- 0.933333333333,
- 1401359745
- ],
- [
- 0.477777777778,
- 1401359760
- ],
- [
- 0.311111111111,
- 1401359775
- ],
- [
- 0.0,
- 1401359790
- ],
- [
- 0.0,
- 1401359805
- ],
- [
- 0.0,
- 1401359820
- ],
- [
- 0.0333333333333,
- 1401359835
- ],
- [
- 0.216666666667,
- 1401359850
- ],
- [
- 0.0,
- 1401359865
- ],
- [
- 0.0266666666667,
- 1401359880
- ],
- [
- 0.36,
- 1401359895
- ],
- [
- 0.8,
- 1401359910
- ],
- [
- 0.0,
- 1401359925
- ],
- [
- 0.0666666666667,
- 1401359940
- ],
- [
- 0.5,
- 1401359955
- ],
- [
- 0.5,
- 1401359970
- ],
- [
- 0.0,
- 1401359985
- ],
- [
- 0.0,
- 1401360000
- ],
- [
- 0.5,
- 1401360015
- ],
- [
- 0.0,
- 1401360030
- ],
- [
- 0.0,
- 1401360045
- ],
- [
- 0.0,
- 1401360060
- ],
- [
- 0.0,
- 1401360075
- ],
- [
- 0.0,
- 1401360090
- ],
- [
- 0.0,
- 1401360105
- ],
- [
- 0.0,
- 1401360120
- ],
- [
- 0.333333333333,
- 1401360135
- ],
- [
- 0.5,
- 1401360150
- ],
- [
- 0.0333333333333,
- 1401360165
- ],
- [
- 0.0,
- 1401360180
- ],
- [
- 0.933333333333,
- 1401360195
- ],
- [
- 0.422222222222,
- 1401360210
- ],
- [
- 0.0444444444444,
- 1401360225
- ],
- [
- 0.0,
- 1401360240
- ],
- [
- 0.0,
- 1401360255
- ],
- [
- 0.433333333333,
- 1401360270
- ],
- [
- 0.5,
- 1401360285
- ],
- [
- 0.0333333333333,
- 1401360300
- ],
- [
- 0.0,
- 1401360315
- ],
- [
- 0.0,
- 1401360330
- ],
- [
- 0.8,
- 1401360345
- ],
- [
- 0.2,
- 1401360360
- ],
- [
- 0.0,
- 1401360375
- ],
- [
- 0.866666666667,
- 1401360390
- ],
- [
- 0.133333333333,
- 1401360405
- ],
- [
- 0.0,
- 1401360420
- ],
- [
- 0.0,
- 1401360435
- ],
- [
- 0.0,
- 1401360450
- ],
- [
- 0.0,
- 1401360465
- ],
- [
- 0.0,
- 1401360480
- ],
- [
- 0.4,
- 1401360495
- ],
- [
- 0.9,
- 1401360510
- ],
- [
- 1.0,
- 1401360525
- ],
- [
- 0.266666666667,
- 1401360540
- ],
- [
- 0.0,
- 1401360555
- ],
- [
- 0.0,
- 1401360570
- ],
- [
- 0.0,
- 1401360585
- ],
- [
- 0.0,
- 1401360600
- ],
- [
- 0.4,
- 1401360615
- ],
- [
- 0.9,
- 1401360630
- ],
- [
- 0.2,
- 1401360645
- ],
- [
- 0.0,
- 1401360660
- ],
- [
- 0.0,
- 1401360675
- ],
- [
- 0.0,
- 1401360690
- ],
- [
- 0.8,
- 1401360705
- ],
- [
- 0.566666666667,
- 1401360720
- ],
- [
- 0.0666666666667,
- 1401360735
- ],
- [
- 0.0,
- 1401360750
- ],
- [
- 0.0,
- 1401360765
- ],
- [
- 0.0,
- 1401360780
- ],
- [
- 0.0,
- 1401360795
- ],
- [
- 0.0,
- 1401360810
- ],
- [
- 0.0,
- 1401360825
- ],
- [
- 0.0,
- 1401360840
- ],
- [
- 0.0,
- 1401360855
- ],
- [
- 0.0,
- 1401360870
- ],
- [
- 0.733333333333,
- 1401360885
- ],
- [
- 0.4,
- 1401360900
- ],
- [
- 0.8,
- 1401360915
- ],
- [
- 0.266666666667,
- 1401360930
- ],
- [
- 0.4,
- 1401360945
- ],
- [
- 0.9,
- 1401360960
- ],
- [
- 0.2,
- 1401360975
- ],
- [
- 0.4,
- 1401360990
- ],
- [
- 0.1,
- 1401361005
- ],
- [
- 0.0,
- 1401361020
- ],
- [
- 0.0,
- 1401361035
- ],
- [
- 0.0,
- 1401361050
- ],
- [
- 0.0,
- 1401361065
- ],
- [
- 0.0,
- 1401361080
- ],
- [
- 0.0,
- 1401361095
- ],
- [
- 0.0,
- 1401361110
- ],
- [
- 0.0,
- 1401361125
- ],
- [
- 0.0,
- 1401361140
- ],
- [
- 0.0,
- 1401361155
- ],
- [
- 0.0,
- 1401361170
- ],
- [
- 0.733333333333,
- 1401361185
- ],
- [
- 0.333333333333,
- 1401361200
- ],
- [
- 0.0,
- 1401361215
- ],
- [
- 0.333333333333,
- 1401361230
- ],
- [
- 0.866666666667,
- 1401361245
- ],
- [
- 0.266666666667,
- 1401361260
- ],
- [
- 0.0,
- 1401361275
- ],
- [
- 0.733333333333,
- 1401361290
- ],
- [
- 0.633333333333,
- 1401361305
- ],
- [
- 0.833333333333,
- 1401361320
- ],
- [
- 0.333333333333,
- 1401361335
- ],
- [
- 0.0,
- 1401361350
- ],
- [
- 0.0,
- 1401361365
- ],
- [
- 0.183333333333,
- 1401361380
- ],
- [
- 0.75,
- 1401361395
- ],
- [
- 0.266666666667,
- 1401361410
- ],
- [
- 0.666666666667,
- 1401361425
- ],
- [
- 0.333333333333,
- 1401361440
- ],
- [
- 0.0,
- 1401361455
- ],
- [
- 0.6,
- 1401361470
- ],
- [
- 0.466666666667,
- 1401361485
- ],
- [
- 0.6,
- 1401361500
- ],
- [
- 0.4,
- 1401361515
- ],
- [
- 0.0,
- 1401361530
- ],
- [
- 0.0,
- 1401361545
- ],
- [
- 0.0,
- 1401361560
- ],
- [
- 0.0,
- 1401361575
- ],
- [
- 0.0,
- 1401361590
- ],
- [
- 0.0,
- 1401361605
- ],
- [
- 0.0,
- 1401361620
- ],
- [
- 0.533333333333,
- 1401361635
- ],
- [
- 0.4,
- 1401361650
- ],
- [
- 0.0,
- 1401361665
- ],
- [
- 0.0,
- 1401361680
- ],
- [
- 0.0,
- 1401361695
- ],
- [
- 0.0,
- 1401361710
- ],
- [
- 0.0,
- 1401361725
- ],
- [
- 0.0,
- 1401361740
- ],
- [
- 0.0,
- 1401361755
- ],
- [
- 0.0,
- 1401361770
- ],
- [
- 0.0,
- 1401361785
- ],
- [
- 0.0,
- 1401361800
- ],
- [
- 0.0,
- 1401361815
- ],
- [
- 0.666666666667,
- 1401361830
- ],
- [
- 0.333333333333,
- 1401361845
- ],
- [
- 0.0,
- 1401361860
- ],
- [
- 0.0,
- 1401361875
- ],
- [
- 0.333333333333,
- 1401361890
- ],
- [
- 0.2,
- 1401361905
- ],
- [
- 0.6,
- 1401361920
- ],
- [
- 0.4,
- 1401361935
- ],
- [
- 0.0,
- 1401361950
- ],
- [
- 0.0,
- 1401361965
- ],
- [
- 0.6,
- 1401361980
- ],
- [
- 0.4,
- 1401361995
- ],
- [
- 0.0,
- 1401362010
- ],
- [
- 0.0,
- 1401362025
- ],
- [
- 0.0,
- 1401362040
- ],
- [
- 0.0,
- 1401362055
- ],
- [
- 0.0,
- 1401362070
- ],
- [
- 0.0,
- 1401362085
- ],
- [
- 0.666666666667,
- 1401362100
- ],
- [
- 0.333333333333,
- 1401362115
- ],
- [
- 0.0,
- 1401362130
- ],
- [
- 0.0,
- 1401362145
- ],
- [
- 0.183333333333,
- 1401362160
- ],
- [
- 0.0833333333333,
- 1401362175
- ],
- [
- 0.0,
- 1401362190
- ],
- [
- 0.0,
- 1401362205
- ],
- [
- 0.8,
- 1401362220
- ],
- [
- 0.2,
- 1401362235
- ],
- [
- 0.0,
- 1401362250
- ],
- [
- 0.0,
- 1401362265
- ],
- [
- 0.0,
- 1401362280
- ],
- [
- 0.0,
- 1401362295
- ],
- [
- 0.0,
- 1401362310
- ],
- [
- 0.0,
- 1401362325
- ],
- [
- 0.0,
- 1401362340
- ],
- [
- 0.0,
- 1401362355
- ],
- [
- 0.8,
- 1401362370
- ],
- [
- 0.2,
- 1401362385
- ],
- [
- 0.0,
- 1401362400
- ],
- [
- 0.0,
- 1401362415
- ],
- [
- 0.366666666667,
- 1401362430
- ],
- [
- 0.1,
- 1401362445
- ],
- [
- 0.0,
- 1401362460
- ],
- [
- 0.0,
- 1401362475
- ],
- [
- 0.0,
- 1401362490
- ],
- [
- 0.0,
- 1401362505
- ],
- [
- 0.288888888889,
- 1401362520
- ],
- [
- 0.0444444444444,
- 1401362535
- ],
- [
- 0.0,
- 1401362550
- ],
- [
- 0.8,
- 1401362565
- ],
- [
- 0.2,
- 1401362580
- ],
- [
- 0.0,
- 1401362595
- ],
- [
- 0.366666666667,
- 1401362610
- ],
- [
- 0.133333333333,
- 1401362625
- ],
- [
- 0.0,
- 1401362640
- ],
- [
- 0.0,
- 1401362655
- ],
- [
- 0.0,
- 1401362670
- ],
- [
- 0.0,
- 1401362685
- ],
- [
- 0.0,
- 1401362700
- ],
- [
- 0.0,
- 1401362715
- ],
- [
- 0.0,
- 1401362730
- ],
- [
- 0.0,
- 1401362745
- ],
- [
- 0.6,
- 1401362760
- ],
- [
- 0.333333333333,
- 1401362775
- ],
- [
- 0.3,
- 1401362790
- ],
- [
- 0.166666666667,
- 1401362805
- ],
- [
- 0.0,
- 1401362820
- ],
- [
- 0.0,
- 1401362835
- ],
- [
- 0.0,
- 1401362850
- ],
- [
- 0.0,
- 1401362865
- ],
- [
- 0.0,
- 1401362880
- ],
- [
- 0.0,
- 1401362895
- ],
- [
- 0.0,
- 1401362910
- ],
- [
- 0.0,
- 1401362925
- ],
- [
- 0.0,
- 1401362940
- ],
- [
- 0.0,
- 1401362955
- ],
- [
- 0.0,
- 1401362970
- ],
- [
- 0.0,
- 1401362985
- ],
- [
- 0.666666666667,
- 1401363000
- ],
- [
- 0.266666666667,
- 1401363015
- ],
- [
- 0.0,
- 1401363030
- ],
- [
- 0.0,
- 1401363045
- ],
- [
- 0.166666666667,
- 1401363060
- ],
- [
- 0.0833333333333,
- 1401363075
- ],
- [
- 0.0,
- 1401363090
- ],
- [
- 0.0,
- 1401363105
- ],
- [
- 0.0,
- 1401363120
- ],
- [
- 0.0,
- 1401363135
- ],
- [
- 0.166666666667,
- 1401363150
- ],
- [
- 0.0833333333333,
- 1401363165
- ],
- [
- 0.222222222222,
- 1401363180
- ]
- ]
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/ambari-web/contrib/views/slider/src/main/resources/ui/app/controllers/slider_app/summary_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/contrib/views/slider/src/main/resources/ui/app/controllers/slider_app/summary_controller.js b/ambari-web/contrib/views/slider/src/main/resources/ui/app/controllers/slider_app/summary_controller.js
deleted file mode 100644
index 7e8d6e6..0000000
--- a/ambari-web/contrib/views/slider/src/main/resources/ui/app/controllers/slider_app/summary_controller.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-App.SliderAppSummaryController = Ember.Controller.extend({
-
-
-
-});
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/ambari-web/contrib/views/slider/src/main/resources/ui/app/helpers/string_utils.js
----------------------------------------------------------------------
diff --git a/ambari-web/contrib/views/slider/src/main/resources/ui/app/helpers/string_utils.js b/ambari-web/contrib/views/slider/src/main/resources/ui/app/helpers/string_utils.js
deleted file mode 100644
index 9675f49..0000000
--- a/ambari-web/contrib/views/slider/src/main/resources/ui/app/helpers/string_utils.js
+++ /dev/null
@@ -1,163 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-module.exports = {
-
- pad: function(str, len, pad, dir) {
-
- var STR_PAD_LEFT = 1;
- var STR_PAD_RIGHT = 2;
- var STR_PAD_BOTH = 3;
-
- if (typeof(len) == "undefined") { len = 0; }
- if (typeof(pad) == "undefined") { pad = ' '; }
- if (typeof(dir) == "undefined") { dir = STR_PAD_RIGHT; }
-
- if (len + 1 >= str.length) {
-
- switch (dir){
-
- case STR_PAD_LEFT:
- str = Array(len + 1 - str.length).join(pad) + str;
- break;
-
- case STR_PAD_BOTH:
- var padlen = len - str.length;
- var right = Math.ceil((padlen) / 2);
- var left = padlen - right;
- str = Array(left+1).join(pad) + str + Array(right+1).join(pad);
- break;
-
- default:
- str = str + Array(len + 1 - str.length).join(pad);
- break;
-
- } // switch
-
- }
- return str;
-
- },
- underScoreToCamelCase: function(name){
- function replacer(str, p1, p2, offset, s) {
- return str[1].toUpperCase();
- }
- return name.replace(/_\w/g,replacer);
- },
-
- /**
- * Forces given string into upper camel-case representation. The first
- * character of each word will be capitalized with the rest in lower case.
- */
- getCamelCase : function(name) {
- if (name != null) {
- return name.toLowerCase().replace(/(\b\w)/g, function(f) {
- return f.toUpperCase();
- })
- }
- return name;
- },
-
- /**
- * Compare two versions by following rules:
- * first higher than second then return 1
- * first lower than second then return -1
- * first equal to second then return 0
- * @param first {string}
- * @param second {string}
- * @return {number}
- */
- compareVersions: function(first, second){
- if (!(typeof first === 'string' && typeof second === 'string')) {
- return false;
- }
- if (first === '' || second === '') {
- return false;
- }
- var firstNumbers = first.split('.');
- var secondNumbers = second.split('.');
- var length = 0;
- var i = 0;
- var result = false;
- if(firstNumbers.length === secondNumbers.length) {
- length = firstNumbers.length;
- } else if(firstNumbers.length < secondNumbers.length){
- length = secondNumbers.length;
- } else {
- length = firstNumbers.length;
- }
-
- while(i < length && !result){
- firstNumbers[i] = (firstNumbers[i] === undefined) ? 0 : window.parseInt(firstNumbers[i]);
- secondNumbers[i] = (secondNumbers[i] === undefined) ? 0 : window.parseInt(secondNumbers[i]);
- if(firstNumbers[i] > secondNumbers[i]){
- result = 1;
- break;
- } else if(firstNumbers[i] === secondNumbers[i]){
- result = 0;
- } else if(firstNumbers[i] < secondNumbers[i]){
- result = -1;
- break;
- }
- i++;
- }
- return result;
- },
-
- isSingleLine: function(string){
- return String(string).trim().indexOf("\n") == -1;
- },
- /**
- * transform array of objects into CSV format content
- * @param array
- * @return {Array}
- */
- arrayToCSV: function(array){
- var content = "";
- array.forEach(function(item){
- var row = [];
- for(var i in item){
- if(item.hasOwnProperty(i)){
- row.push(item[i]);
- }
- }
- content += row.join(',') + '\n';
- });
- return content;
- },
-
- /**
- * Extracts filename from linux/unix path
- * @param path
- * @return {string}: filename
- */
- getFileFromPath: function(path) {
- if (!path || typeof path !== 'string') {
- return '';
- }
- return path.replace(/^.*[\/]/, '');
- },
-
- getPath: function(path) {
- if (!path || typeof path !== 'string' || path[0] != '/') {
- return '';
- }
- var last_slash = path.lastIndexOf('/');
- return (last_slash!=0)?path.substr(0,last_slash):'/';
- }
-};
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/ambari-web/contrib/views/slider/src/main/resources/ui/app/templates/common/chart.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/contrib/views/slider/src/main/resources/ui/app/templates/common/chart.hbs b/ambari-web/contrib/views/slider/src/main/resources/ui/app/templates/common/chart.hbs
deleted file mode 100644
index 1a7e393..0000000
--- a/ambari-web/contrib/views/slider/src/main/resources/ui/app/templates/common/chart.hbs
+++ /dev/null
@@ -1,26 +0,0 @@
-{{!
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements. See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership. The ASF licenses this file
-* to you 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.
-}}
-
-<div {{bind-attr class=":time-label"}}>{{view.parentView.currentTimeState.name}}</div>
-<div {{bind-attr id="view.containerId"}} {{bind-attr class="view.containerClass :chart-container"}}>
- <div {{bind-attr id="view.yAxisId"}} {{bind-attr class="view.yAxisClass :chart-y-axis"}}></div>
- <div {{bind-attr id="view.xAxisId"}} {{bind-attr class="view.xAxisClass :chart-x-axis"}}></div>
- <div {{bind-attr id="view.legendId"}} {{bind-attr class="view.legendClass :chart-legend"}}></div>
- <div {{bind-attr id="view.chartId"}} {{bind-attr class="view.chartClass :chart"}}></div>
- <div {{bind-attr id="view.titleId"}} {{bind-attr class="view.titleClass :chart-title"}}>{{view.title}}</div>
-</div>
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/ambari-web/contrib/views/slider/src/main/resources/ui/app/views/common/chart_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/contrib/views/slider/src/main/resources/ui/app/views/common/chart_view.js b/ambari-web/contrib/views/slider/src/main/resources/ui/app/views/common/chart_view.js
deleted file mode 100644
index 4af203b..0000000
--- a/ambari-web/contrib/views/slider/src/main/resources/ui/app/views/common/chart_view.js
+++ /dev/null
@@ -1,915 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with this
- * work for additional information regarding copyright ownership. The ASF
- * licenses this file to you 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.
- */
-
-var string_utils = require('helpers/string_utils');
-
-/**
- * @class
- *
- * This is a view which GETs data from a URL and shows it as a time based line
- * graph. Time is shown on the X axis with data series shown on Y axis. It
- * optionally also has the ability to auto refresh itself over a given time
- * interval.
- *
- * This is an abstract class which is meant to be extended.
- *
- * Extending classes should override the following:
- * <ul>
- * <li>url - from where the data can be retrieved
- * <li>title - Title to be displayed when showing the chart
- * <li>id - which uniquely identifies this chart in any page
- * <li>#transformToSeries(jsonData) - function to map server data into graph
- * series
- * </ul>
- *
- * Extending classes could optionally override the following:
- * <ul>
- * <li>#colorForSeries(series) - function to get custom colors per series
- * </ul>
- *
- * @extends Ember.Object
- * @extends Ember.View
- */
-App.ChartView = Ember.View.extend({
-
- templateName: 'common/chart',
-
- /**
- * The URL from which data can be retrieved.
- *
- * This property must be provided for the graph to show properly.
- *
- * @type String
- * @default null
- */
- url: null,
-
- /**
- * A unique ID for this chart.
- *
- * @type String
- * @default null
- */
- id: null,
-
- /**
- * Title to be shown under the chart.
- *
- * @type String
- * @default null
- */
- title: null,
-
- /**
- * @private
- *
- * @type Rickshaw.Graph
- * @default null
- */
- _graph: null,
-
- /**
- * Array of classnames for each series (in widget)
- * @type Rickshaw.Graph
- */
- _popupGraph: null,
-
- /**
- * Array of classnames for each series
- * @type Array
- */
- _seriesProperties: null,
-
- /**
- * Array of classnames for each series (in widget)
- * @type Array
- */
- _seriesPropertiesWidget: null,
-
- /**
- * Renderer type
- * See <code>Rickshaw.Graph.Renderer</code> for more info
- * @type String
- */
- renderer: 'area',
-
- /**
- * Suffix used in DOM-elements selectors
- * @type String
- */
- popupSuffix: '-popup',
-
- /**
- * Is popup for current graph open
- * @type Boolean
- */
- isPopup: false,
-
- /**
- * Is graph ready
- * @type Boolean
- */
- isReady: false,
-
- /**
- * Is popup-graph ready
- * @type Boolean
- */
- isPopupReady: false,
-
- /**
- * Is data for graph available
- * @type Boolean
- */
- hasData: true,
-
- containerId: null,
- containerClass: null,
- yAxisId: null,
- yAxisClass: null,
- xAxisId: null,
- xAxisClass: null,
- legendId: null,
- legendClass: null,
- chartId: null,
- chartClass: null,
- titleId: null,
- titleClass: null,
-
- didInsertElement: function() {
- var id = this.get('id');
- var idTemplate = id + '-{element}';
-
- this.set('containerId', idTemplate.replace('{element}', 'container'));
- this.set('containerClass', 'chart-container');
- this.set('yAxisId', idTemplate.replace('{element}', 'yaxis'));
- this.set('yAxisClass', this.get('yAxisId'));
- this.set('xAxisId', idTemplate.replace('{element}', 'xaxis'));
- this.set('xAxisClass', this.get('xAxisId'));
- this.set('legendId', idTemplate.replace('{element}', 'legend'));
- this.set('legendClass', this.get('legendId'));
- this.set('chartId', idTemplate.replace('{element}', 'chart'));
- this.set('chartClass', this.get('chartId'));
- this.set('titleId', idTemplate.replace('{element}', 'title'));
- this.set('titleClass', this.get('titleId'));
- this.loadData();
- },
-
-
- loadData: function() {
- App.ajax.send({
- name: this.get('ajaxIndex'),
- sender: this,
- data: this.getDataForAjaxRequest(),
- success: '_refreshGraph',
- error: 'loadDataErrorCallback'
- });
- },
-
- getDataForAjaxRequest: function() {
- return {};
- },
-
- loadDataErrorCallback: function(xhr, textStatus, errorThrown) {
- this.set('isReady', true);
- if (xhr.readyState == 4 && xhr.status) {
- textStatus = xhr.status + " " + textStatus;
- }
- this._showMessage('warn', 'graphs.error.title', textStatus + ' ' + errorThrown);
- this.set('isPopup', false);
- this.set('hasData', false);
- },
-
- /**
- * Shows a yellow warning message in place of the chart.
- *
- * @param type Can be any of 'warn', 'error', 'info', 'success'
- * @param title Bolded title for the message
- * @param message String representing the message
- * @type: Function
- */
- _showMessage: function(type, title, message) {
- var chartOverlay = '#' + this.id;
- var chartOverlayId = chartOverlay + '-chart';
- var chartOverlayY = chartOverlay + '-yaxis';
- var chartOverlayX = chartOverlay + '-xaxis';
- var chartOverlayLegend = chartOverlay + '-legend';
- var chartOverlayTimeline = chartOverlay + '-timeline';
- if (this.get('isPopup')) {
- chartOverlayId += this.get('popupSuffix');
- chartOverlayY += this.get('popupSuffix');
- chartOverlayX += this.get('popupSuffix');
- chartOverlayLegend += this.get('popupSuffix');
- chartOverlayTimeline += this.get('popupSuffix');
- }
- var typeClass;
- switch (type) {
- case 'error':
- typeClass = 'alert-error';
- break;
- case 'success':
- typeClass = 'alert-success';
- break;
- case 'info':
- typeClass = 'alert-info';
- break;
- default:
- typeClass = '';
- break;
- }
- $(chartOverlayId+', '+chartOverlayY+', '+chartOverlayX+', '+chartOverlayLegend+', '+chartOverlayTimeline).html('');
- $(chartOverlayId).append('<div class=\"alert '+typeClass+'\"><strong>'+title+'</strong> '+message+'</div>');
- },
-
- /**
- * Transforms the JSON data retrieved from the server into the series
- * format that Rickshaw.Graph understands.
- *
- * The series object is generally in the following format: [ { name :
- * "Series 1", data : [ { x : 0, y : 0 }, { x : 1, y : 1 } ] } ]
- *
- * Extending classes should override this method.
- *
- * @param seriesData
- * Data retrieved from the server
- * @param displayName
- * Graph title
- * @type: Function
- *
- */
- transformData: function (seriesData, displayName) {
- var seriesArray = [];
- if (seriesData != null) {
- // Is it a string?
- if ("string" == typeof seriesData) {
- seriesData = JSON.parse(seriesData);
- }
- // Is it a number?
- if ("number" == typeof seriesData) {
- // Same number applies to all time.
- var number = seriesData;
- seriesData = [];
- seriesData.push([number, (new Date().getTime())-(60*60)]);
- seriesData.push([number, (new Date().getTime())]);
- }
- // We have valid data
- var series = {};
- series.name = displayName;
- series.data = [];
- for ( var index = 0; index < seriesData.length; index++) {
- series.data.push({
- x: seriesData[index][1],
- y: seriesData[index][0]
- });
- }
- return series;
- }
- return null;
- },
-
- /**
- * Provides the formatter to use in displaying Y axis.
- *
- * Uses the App.ChartLinearTimeView.DefaultFormatter which shows 10K,
- * 300M etc.
- *
- * @type Function
- */
- yAxisFormatter: function(y) {
- return App.ChartView.DefaultFormatter(y);
- },
-
- /**
- * Provides the color (in any HTML color format) to use for a particular
- * series.
- * May be redefined in child views
- *
- * @param series
- * Series for which color is being requested
- * @return color String. Returning null allows this chart to pick a color
- * from palette.
- * @default null
- * @type Function
- */
- colorForSeries: function (series) {
- return null;
- },
-
- /**
- * Check whether seriesData is correct data for chart drawing
- * @param {Array} seriesData
- * @return {Boolean}
- */
- checkSeries : function(seriesData) {
- if(!seriesData || !seriesData.length) {
- return false;
- }
- var result = true;
- seriesData.forEach(function(item) {
- if(!item.data || !item.data.length || !item.data[0] || typeof item.data[0].x === 'undefined') {
- result = false;
- }
- });
- return result;
- },
-
- /**
- * @private
- *
- * Refreshes the graph with the latest JSON data.
- *
- * @type Function
- */
- _refreshGraph: function (jsonData) {
- if(this.get('isDestroyed')){
- return;
- }
- var seriesData = this.transformToSeries(jsonData);
-
- //if graph opened as modal popup
- var popup_path = $("#" + this.get('id') + "-container" + this.get('popupSuffix'));
- var graph_container = $("#" + this.get('id') + "-container");
- if(popup_path.length) {
- popup_path.children().each(function () {
- $(this).children().remove();
- });
- this.set('isPopup', true);
- }
- else {
- graph_container.children().each(function (index, value) {
- $(value).children().remove();
- });
- }
- if (this.checkSeries(seriesData)) {
- // Check container exists (may be not, if we go to another page and wait while graphs loading)
- if (graph_container.length) {
- this.draw(seriesData);
- this.set('hasData', true);
- //move yAxis value lower to make them fully visible
- $("#" + this.id + "-container").find('.y_axis text').attr('y',8);
- }
- }
- else {
- this.set('isReady', true);
- //if Axis X time interval is default(60 minutes)
- if(this.get('timeUnitSeconds') === 3600){
- this._showMessage('info', this.t('graphs.noData.title'), this.t('graphs.noData.message'));
- this.set('hasData', false);
- }
- else {
- this._showMessage('info', this.t('graphs.noData.title'), this.t('graphs.noDataAtTime.message'));
- }
- this.set('isPopup', false);
- }
- },
-
- /**
- * Returns a custom time unit, that depends on X axis interval length, for the graph's X axis.
- * This is needed as Rickshaw's default time X axis uses UTC time, which can be confusing
- * for users expecting locale specific time.
- *
- * If <code>null</code> is returned, Rickshaw's default time unit is used.
- *
- * @type Function
- * @return Rickshaw.Fixtures.Time
- */
- localeTimeUnit: function(timeUnitSeconds) {
- var timeUnit = new Rickshaw.Fixtures.Time();
- switch (timeUnitSeconds){
- case 604800:
- timeUnit = timeUnit.unit('day');
- break;
- case 2592000:
- timeUnit = timeUnit.unit('week');
- break;
- case 31104000:
- timeUnit = timeUnit.unit('month');
- break;
- default:
- timeUnit = {
- name: timeUnitSeconds / 240 + ' minute',
- seconds: timeUnitSeconds / 4,
- formatter: function (d) {
- return d.toLocaleString().match(/(\d+:\d+):/)[1];
- }
- };
- }
- return timeUnit;
- },
-
- /**
- * temporary fix for incoming data for graph
- * to shift data time to correct time point
- * @param {Array} data
- */
- dataShiftFix: function(data) {
- var nowTime = Math.round((new Date().getTime()) / 1000);
- data.forEach(function(series){
- var l = series.data.length;
- var shiftDiff = nowTime - series.data[l - 1].x;
- if(shiftDiff > 3600){
- for(var i = 0;i < l;i++){
- series.data[i].x = series.data[i].x + shiftDiff;
- }
- series.data.unshift({
- x: nowTime - this.get('timeUnitSeconds'),
- y: 0
- });
- }
- }, this);
- },
-
- /**
- * calculate statistic data for popup legend and set proper colors for series
- * @param {Array} data
- */
- dataPreProcess: function(data) {
- var self = this;
- var palette = new Rickshaw.Color.Palette({ scheme: 'munin'});
- // Format series for display
- var series_min_length = 100000000;
- data.forEach(function (series, index) {
- var seriesColor = self.colorForSeries(series);
- if (seriesColor == null) {
- seriesColor = palette.color();
- }
- series.color = seriesColor;
- series.stroke = 'rgba(0,0,0,0.3)';
- if (this.get('isPopup')) {
- // calculate statistic data for popup legend
- var avg = 0;
- var min = Number.MAX_VALUE;
- var max = Number.MIN_VALUE;
- for (var i = 0; i < series.data.length; i++) {
- avg += series.data[i]['y'];
- if (series.data[i]['y'] < min) {
- min = series.data[i]['y'];
- }
- else {
- if (series.data[i]['y'] > max) {
- max = series.data[i]['y'];
- }
- }
- }
- series.name = string_utils.pad(series.name, 30, ' ', 2) +
- string_utils.pad('min', 5, ' ', 3) +
- string_utils.pad(this.get('yAxisFormatter')(min), 12, ' ', 3) +
- string_utils.pad('avg', 5, ' ', 3) +
- string_utils.pad(this.get('yAxisFormatter')(avg/series.data.length), 12, ' ', 3) +
- string_utils.pad('max', 12, ' ', 3) +
- string_utils.pad(this.get('yAxisFormatter')(max), 5, ' ', 3);
- }
- if (series.data.length < series_min_length) {
- series_min_length = series.data.length;
- }
- }.bind(this));
-
- // All series should have equal length
- data.forEach(function(series, index) {
- if (series.data.length > series_min_length) {
- series.data.length = series_min_length;
- }
- });
- },
-
- draw: function(seriesData) {
- var self = this;
- var isPopup = this.get('isPopup');
- var p = isPopup ? this.get('popupSuffix') : '';
-
- this.dataShiftFix(seriesData);
- this.dataPreProcess(seriesData);
-
- var chartId = "#" + this.get('id') + "-chart" + p;
- var chartOverlayId = "#" + this.get('id') + "-container" + p;
- var xaxisElementId = "#" + this.get('id') + "-xaxis" + p;
- var yaxisElementId = "#" + this.get('id') + "-yaxis" + p;
- var legendElementId = "#" + this.get('id') + "-legend" + p;
-
- var chartElement = document.querySelector(chartId);
- var overlayElement = document.querySelector(chartOverlayId);
- var xaxisElement = document.querySelector(xaxisElementId);
- var yaxisElement = document.querySelector(yaxisElementId);
- var legendElement = document.querySelector(legendElementId);
-
- var height = 150;
- var width = 400;
- var diff = 32;
-
- if(this.get('inWidget')) {
- height = 105; // for widgets view
- diff = 22;
- }
- if (isPopup) {
- height = 180;
- width = 670;
- }
- else {
- // If not in popup, the width could vary.
- // We determine width based on div's size.
- var thisElement = this.get('element');
- if (thisElement!=null) {
- var calculatedWidth = $(thisElement).width();
- if (calculatedWidth > diff) {
- width = calculatedWidth - diff;
- }
- }
- }
-
- var _graph = new Rickshaw.Graph({
- height: height,
- width: width,
- element: chartElement,
- series: seriesData,
- interpolation: 'step-after',
- stroke: true,
- renderer: this.get('renderer'),
- strokeWidth: (this.get('renderer') != 'area' ? 2 : 1)
- });
-
- if (this.get('renderer') === 'area') {
- _graph.renderer.unstack = false;
- }
-
- new Rickshaw.Graph.Axis.Time({
- graph: _graph,
- timeUnit: this.localeTimeUnit(this.get('timeUnitSeconds'))
- });
-
- new Rickshaw.Graph.Axis.Y({
- tickFormat: this.yAxisFormatter,
- element: yaxisElement,
- orientation: (isPopup ? 'left' : 'right'),
- graph: _graph
- });
-
- var legend = new Rickshaw.Graph.Legend({
- graph: _graph,
- element: legendElement
- });
-
- new Rickshaw.Graph.Behavior.Series.Toggle({
- graph: _graph,
- legend: legend
- });
-
- new Rickshaw.Graph.Behavior.Series.Order({
- graph: _graph,
- legend: legend
- });
-
- if (!isPopup) {
- overlayElement.addEventListener('mousemove', function () {
- $(xaxisElement).removeClass('hide');
- $(legendElement).removeClass('hide');
- $(chartElement).children("div").removeClass('hide');
- });
- overlayElement.addEventListener('mouseout', function () {
- $(legendElement).addClass('hide');
- });
- _graph.onUpdate(function () {
- $(legendElement).addClass('hide');
- });
- }
-
- //show the graph when it's loaded
- _graph.onUpdate(function() {
- self.set('isReady', true);
- });
- _graph.render();
-
- if (isPopup) {
- new Rickshaw.Graph.HoverDetail({
- graph: _graph,
- yFormatter:function (y) {
- return self.yAxisFormatter(y);
- },
- xFormatter:function (x) {
- return (new Date(x * 1000)).toLocaleTimeString();
- },
- formatter:function (series, x, y, formattedX, formattedY, d) {
- return formattedY + '<br />' + formattedX;
- }
- });
- }
-
- _graph = this.updateSeriesInGraph(_graph);
- if (isPopup) {
- //show the graph when it's loaded
- _graph.onUpdate(function() {
- self.set('isPopupReady', true);
- });
- _graph.update();
-
- var selector = '#'+this.get('id')+'-container'+this.get('popupSuffix');
- $(selector + ' li.line').click(function() {
- var series = [];
- $(selector + ' a.action').each(function(index, v) {
- series[index] = v.parentNode.classList;
- });
- self.set('_seriesProperties', series);
- });
-
- this.set('_popupGraph', _graph);
- }
- else {
- _graph.update();
- var selector = '#'+this.get('id')+'-container';
- $(selector + ' li.line').click(function() {
- var series = [];
- $(selector + ' a.action').each(function(index, v) {
- series[index] = v.parentNode.classList;
- });
- self.set('_seriesPropertiesWidget', series);
- });
-
- this.set('_graph', _graph);
- }
- },
-
- /**
- *
- * @param {Rickshaw.Graph} graph
- * @returns {Rickshaw.Graph}
- */
- updateSeriesInGraph: function(graph) {
- var id = this.get('id');
- var isPopup = this.get('isPopup');
- var popupSuffix = this.get('popupSuffix');
- var _series = isPopup ? this.get('_seriesProperties') : this.get('_seriesPropertiesWidget');
- graph.series.forEach(function(series, index) {
- if (_series !== null && _series[index] !== null && _series[index] !== undefined ) {
- if(_series[_series.length - index - 1].length > 1) {
- var s = '#' + id + '-container' + (isPopup ? popupSuffix : '') + ' a.action:eq(' + (_series.length - index - 1) + ')';
- $(s).parent('li').addClass('disabled');
- series.disable();
- }
- }
- });
- return graph;
- },
-
- showGraphInPopup: function() {
- if(!this.get('hasData')) {
- return;
- }
-
- this.set('isPopup', true);
- var self = this;
-
- App.ModalPopup.show({
- bodyClass: Em.View.extend({
-
- containerId: null,
- containerClass: null,
- yAxisId: null,
- yAxisClass: null,
- xAxisId: null,
- xAxisClass: null,
- legendId: null,
- legendClass: null,
- chartId: null,
- chartClass: null,
- titleId: null,
- titleClass: null,
-
- isReady: function() {
- return this.get('parentView.graph.isPopupReady');
- }.property('parentView.graph.isPopupReady'),
-
- didInsertElement: function() {
- $('#modal').addClass('modal-graph-line');
- var popupSuffix = this.get('parentView.graph.popupSuffix');
- var id = this.get('parentView.graph.id');
- var idTemplate = id + '-{element}' + popupSuffix;
-
- this.set('containerId', idTemplate.replace('{element}', 'container'));
- this.set('containerClass', 'chart-container' + popupSuffix);
- this.set('yAxisId', idTemplate.replace('{element}', 'yaxis'));
- this.set('yAxisClass', this.get('yAxisId').replace(popupSuffix, ''));
- this.set('xAxisId', idTemplate.replace('{element}', 'xaxis'));
- this.set('xAxisClass', this.get('xAxisId').replace(popupSuffix, ''));
- this.set('legendId', idTemplate.replace('{element}', 'legend'));
- this.set('legendClass', this.get('legendId').replace(popupSuffix, ''));
- this.set('chartId', idTemplate.replace('{element}', 'chart'));
- this.set('chartClass', this.get('chartId').replace(popupSuffix, ''));
- this.set('titleId', idTemplate.replace('{element}', 'title'));
- this.set('titleClass', this.get('titleId').replace(popupSuffix, ''));
- },
-
- templateName: require('templates/common/chart/linear_time'),
- /**
- * check is time paging feature is enable for graph
- */
- isTimePagingEnable: function() {
- return !self.get('isTimePagingDisable');
- }.property(),
- rightArrowVisible: function() {
- return (this.get('isReady') && (this.get('parentView.currentTimeIndex') != 0));
- }.property('isReady', 'parentView.currentTimeIndex'),
- leftArrowVisible: function() {
- return (this.get('isReady') && (this.get('parentView.currentTimeIndex') != 7));
- }.property('isReady', 'parentView.currentTimeIndex')
- }),
- header: this.get('title'),
- /**
- * App.ChartLinearTimeView
- */
- graph: self,
- secondary: null,
- onPrimary: function() {
- this.hide();
- self.set('isPopup', false);
- self.set('timeUnitSeconds', 3600);
- },
- onClose: function() {
- this.onPrimary();
- },
- /**
- * move graph back by time
- * @param event
- */
- switchTimeBack: function(event) {
- var index = this.get('currentTimeIndex');
- // 7 - number of last time state
- if(index < 7) {
- this.reloadGraphByTime(++index);
- }
- },
- /**
- * move graph forward by time
- * @param event
- */
- switchTimeForward: function(event) {
- var index = this.get('currentTimeIndex');
- if(index > 0) {
- this.reloadGraphByTime(--index);
- }
- },
- /**
- * reload graph depending on the time
- * @param index
- */
- reloadGraphByTime: function(index) {
- this.set('currentTimeIndex', index);
- self.set('timeUnitSeconds', this.get('timeStates')[index].seconds);
- self.loadData();
- },
- timeStates: [
- {name: Em.I18n.t('graphs.timeRange.hour'), seconds: 3600},
- {name: Em.I18n.t('graphs.timeRange.twoHours'), seconds: 7200},
- {name: Em.I18n.t('graphs.timeRange.fourHours'), seconds: 14400},
- {name: Em.I18n.t('graphs.timeRange.twelveHours'), seconds: 43200},
- {name: Em.I18n.t('graphs.timeRange.day'), seconds: 86400},
- {name: Em.I18n.t('graphs.timeRange.week'), seconds: 604800},
- {name: Em.I18n.t('graphs.timeRange.month'), seconds: 2592000},
- {name: Em.I18n.t('graphs.timeRange.year'), seconds: 31104000}
- ],
- currentTimeIndex: 0,
- currentTimeState: function() {
- return this.get('timeStates').objectAt(this.get('currentTimeIndex'));
- }.property('currentTimeIndex')
- });
- Ember.run.next(function() {
- self.loadData();
- self.set('isPopupReady', false);
- });
- },
- //60 minute interval on X axis.
- timeUnitSeconds: 3600
-});
-
-/**
- * A formatter which will turn a number into computer storage sizes of the
- * format '23 GB' etc.
- *
- * @type {Function}
- */
-App.ChartView.BytesFormatter = function (y) {
- if (y == 0) return '0 B';
- var value = Rickshaw.Fixtures.Number.formatBase1024KMGTP(y);
- if (!y || y.length < 1) {
- value = '0 B';
- }
- else {
- if ("number" == typeof value) {
- value = String(value);
- }
- if ("string" == typeof value) {
- value = value.replace(/\.\d(\d+)/, function($0, $1){ // Remove only 1-digit after decimal part
- return $0.replace($1, '');
- });
- // Either it ends with digit or ends with character
- value = value.replace(/(\d$)/, '$1 '); // Ends with digit like '120'
- value = value.replace(/([a-zA-Z]$)/, ' $1'); // Ends with character like
- // '120M'
- value = value + 'B'; // Append B to make B, MB, GB etc.
- }
- }
- return value;
-};
-
-/**
- * A formatter which will turn a number into percentage display like '42%'
- *
- * @type {Function}
- */
-App.ChartView.PercentageFormatter = function (percentage) {
- var value = percentage;
- if (!value || value.length < 1) {
- value = '0 %';
- } else {
- value = value.toFixed(3).replace(/0+$/, '').replace(/\.$/, '') + '%';
- }
- return value;
-};
-
-/**
- * A formatter which will turn elapsed time into display time like '50 ms',
- * '5s', '10 m', '3 hr' etc. Time is expected to be provided in milliseconds.
- *
- * @type {Function}
- */
-App.ChartView.TimeElapsedFormatter = function (millis) {
- var value = millis;
- if (!value || value.length < 1) {
- value = '0 ms';
- } else if ("number" == typeof millis) {
- var seconds = millis > 1000 ? Math.round(millis / 1000) : 0;
- var minutes = seconds > 60 ? Math.round(seconds / 60) : 0;
- var hours = minutes > 60 ? Math.round(minutes / 60) : 0;
- var days = hours > 24 ? Math.round(hours / 24) : 0;
- if (days > 0) {
- value = days + ' d';
- } else if (hours > 0) {
- value = hours + ' hr';
- } else if (minutes > 0) {
- value = minutes + ' m';
- } else if (seconds > 0) {
- value = seconds + ' s';
- } else if (millis > 0) {
- value = millis.toFixed(3).replace(/0+$/, '').replace(/\.$/, '') + ' ms';
- } else {
- value = millis.toFixed(3).replace(/0+$/, '').replace(/\.$/, '') + ' ms';
- }
- }
- return value;
-};
-
-/**
- * The default formatter which uses Rickshaw.Fixtures.Number.formatKMBT
- * which shows 10K, 300M etc.
- *
- * @type {Function}
- */
-App.ChartView.DefaultFormatter = function(y) {
- if(isNaN(y)){
- return 0;
- }
- var value = Rickshaw.Fixtures.Number.formatKMBT(y);
- if (value == '') return '0';
- value = String(value);
- var c = value[value.length - 1];
- if (!isNaN(parseInt(c))) {
- // c is digit
- value = parseFloat(value).toFixed(3).replace(/0+$/, '').replace(/\.$/, '');
- }
- else {
- // c in not digit
- value = parseFloat(value.substr(0, value.length - 1)).toFixed(3).replace(/0+$/, '').replace(/\.$/, '') + c;
- }
- return value;
-};
-
-
-/**
- * Creates and returns a formatter that can convert a 'value'
- * to 'value units/s'.
- *
- * @param unitsPrefix Prefix which will be used in 'unitsPrefix/s'
- * @param valueFormatter Value itself will need further processing
- * via provided formatter. Ex: '10M requests/s'. Generally
- * should be App.ChartLinearTimeView.DefaultFormatter.
- * @return {Function}
- */
-App.ChartView.CreateRateFormatter = function (unitsPrefix, valueFormatter) {
- var suffix = " "+unitsPrefix+"/s";
- return function (value) {
- value = valueFormatter(value) + suffix;
- return value;
- };
-};
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/ambari-web/contrib/views/slider/src/main/resources/ui/app/views/slider_app/metrics/metric2_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/contrib/views/slider/src/main/resources/ui/app/views/slider_app/metrics/metric2_view.js b/ambari-web/contrib/views/slider/src/main/resources/ui/app/views/slider_app/metrics/metric2_view.js
deleted file mode 100644
index 2838888..0000000
--- a/ambari-web/contrib/views/slider/src/main/resources/ui/app/views/slider_app/metrics/metric2_view.js
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with this
- * work for additional information regarding copyright ownership. The ASF
- * licenses this file to you 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.
- */
-
-/**
- * @class
- *
- * This is a view for showing cluster CPU metrics
- *
- * @extends App.ChartView
- * @extends Ember.Object
- * @extends Ember.View
- */
-App.Metric2View = App.ChartView.extend({
- id: "service-metrics-hdfs-jvm-threads",
- title: 'jvm Threads',
- renderer: 'line',
-
- ajaxIndex: 'metrics2',
-
- transformToSeries: function (jsonData) {
- var seriesArray = [];
- if (jsonData && jsonData.metrics && jsonData.metrics.jvm) {
- for ( var name in jsonData.metrics.jvm) {
- var displayName;
- var seriesData = jsonData.metrics.jvm[name];
- switch (name) {
- case "threadsBlocked":
- displayName = 'Threads Blocked';
- break;
- case "threadsWaiting":
- displayName = 'Threads Waiting';
- break;
- case "threadsTimedWaiting":
- displayName = 'Threads Timed Waiting';
- break;
- case "threadsRunnable":
- displayName = 'Threads Runnable';
- break;
- default:
- break;
- }
- if (seriesData) {
- seriesArray.push(this.transformData(seriesData, displayName));
- }
- }
- }
- return seriesArray;
- }
-});
[8/8] git commit: Revert "AMBARI-5928. Create and populate Metrics
section of a slider app. (onechiporenko)" - changes made in ambari-web
Posted by sr...@apache.org.
Revert "AMBARI-5928. Create and populate Metrics section of a slider
app. (onechiporenko)" - changes made in ambari-web
This reverts commit 79f3a1a3d1c4908923899e1aadc949d20d86abe7.
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/fc28f7ee
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/fc28f7ee
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/fc28f7ee
Branch: refs/heads/branch-1.6.0.slider
Commit: fc28f7ee3065e1c0a221a9a1cec23a8aac177ec7
Parents: ac8a51c
Author: Srimanth Gunturi <sg...@hortonworks.com>
Authored: Thu May 29 13:04:08 2014 -0700
Committer: Srimanth Gunturi <sg...@hortonworks.com>
Committed: Thu May 29 13:04:08 2014 -0700
----------------------------------------------------------------------
.../ui/app/assets/data/metrics/metric.json | 2818 -------
.../ui/app/assets/data/metrics/metric2.json | 3838 ----------
.../ui/app/assets/data/metrics/metric3.json | 1856 -----
.../ui/app/assets/data/metrics/metric4.json | 968 ---
.../slider_app/summary_controller.js | 23 -
.../resources/ui/app/helpers/string_utils.js | 163 -
.../resources/ui/app/templates/common/chart.hbs | 26 -
.../resources/ui/app/views/common/chart_view.js | 915 ---
.../views/slider_app/metrics/metric2_view.js | 63 -
.../views/slider_app/metrics/metric3_view.js | 61 -
.../views/slider_app/metrics/metric4_view.js | 54 -
.../app/views/slider_app/metrics/metric_view.js | 70 -
.../ui/app/views/slider_app/summary_view.js | 27 -
.../ui/vendor/scripts/common/cubism.v1.js | 1085 ---
.../resources/ui/vendor/scripts/common/d3.v2.js | 7033 ------------------
.../ui/vendor/scripts/common/jquery.ui.core.js | 334 -
.../ui/vendor/scripts/common/jquery.ui.mouse.js | 175 -
.../vendor/scripts/common/jquery.ui.sortable.js | 1088 ---
.../vendor/scripts/common/jquery.ui.widget.js | 276 -
.../ui/vendor/scripts/common/rickshaw.js | 2659 -------
.../main/resources/ui/vendor/styles/cubism.css | 82 -
.../resources/ui/vendor/styles/rickshaw.css | 307 -
.../resources/ui/app/assets/data/apps/apps.json | 25 +-
.../ui/app/assets/data/apptypes/all_fields.json | 296 +-
.../ui/app/controllers/slider_app_controller.js | 1 +
.../src/main/resources/ui/app/helpers/ajax.js | 21 -
.../src/main/resources/ui/app/helpers/helper.js | 41 -
.../ui/app/mappers/slider_apps_mapper.js | 13 +-
.../main/resources/ui/app/models/slider_app.js | 18 +-
.../src/main/resources/ui/app/routes/main.js | 6 +-
.../resources/ui/app/styles/application.less | 92 +-
.../ui/app/templates/slider_app/configs.hbs | 8 +-
.../ui/app/templates/slider_app/summary.hbs | 25 +-
.../slider/src/main/resources/ui/config.js | 12 -
.../slider/src/main/resources/ui/package.json | 1 +
35 files changed, 44 insertions(+), 24436 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/ambari-web/contrib/views/slider/src/main/resources/ui/app/assets/data/metrics/metric.json
----------------------------------------------------------------------
diff --git a/ambari-web/contrib/views/slider/src/main/resources/ui/app/assets/data/metrics/metric.json b/ambari-web/contrib/views/slider/src/main/resources/ui/app/assets/data/metrics/metric.json
deleted file mode 100644
index 38fc817..0000000
--- a/ambari-web/contrib/views/slider/src/main/resources/ui/app/assets/data/metrics/metric.json
+++ /dev/null
@@ -1,2818 +0,0 @@
-{
- "metrics" : {
- "dfs" : {
- "FSNamesystem" : {
- "CapacityRemainingGB" : [
- [
- 5.0,
- 1401351555
- ],
- [
- 5.0,
- 1401351570
- ],
- [
- 5.0,
- 1401351585
- ],
- [
- 5.0,
- 1401351600
- ],
- [
- 5.0,
- 1401351615
- ],
- [
- 5.0,
- 1401351630
- ],
- [
- 5.0,
- 1401351645
- ],
- [
- 5.0,
- 1401351660
- ],
- [
- 5.0,
- 1401351675
- ],
- [
- 5.0,
- 1401351690
- ],
- [
- 5.0,
- 1401351705
- ],
- [
- 5.0,
- 1401351720
- ],
- [
- 5.0,
- 1401351735
- ],
- [
- 5.0,
- 1401351750
- ],
- [
- 5.0,
- 1401351765
- ],
- [
- 5.0,
- 1401351780
- ],
- [
- 5.0,
- 1401351795
- ],
- [
- 5.0,
- 1401351810
- ],
- [
- 5.0,
- 1401351825
- ],
- [
- 5.0,
- 1401351840
- ],
- [
- 5.0,
- 1401351855
- ],
- [
- 5.0,
- 1401351870
- ],
- [
- 5.0,
- 1401351885
- ],
- [
- 5.0,
- 1401351900
- ],
- [
- 5.0,
- 1401351915
- ],
- [
- 5.0,
- 1401351930
- ],
- [
- 5.0,
- 1401351945
- ],
- [
- 5.0,
- 1401351960
- ],
- [
- 5.0,
- 1401351975
- ],
- [
- 5.0,
- 1401351990
- ],
- [
- 5.0,
- 1401352005
- ],
- [
- 5.0,
- 1401352020
- ],
- [
- 5.0,
- 1401352035
- ],
- [
- 5.0,
- 1401352050
- ],
- [
- 5.0,
- 1401352065
- ],
- [
- 5.0,
- 1401352080
- ],
- [
- 5.0,
- 1401352095
- ],
- [
- 5.0,
- 1401352110
- ],
- [
- 5.0,
- 1401352125
- ],
- [
- 5.0,
- 1401352140
- ],
- [
- 5.0,
- 1401352155
- ],
- [
- 5.0,
- 1401352170
- ],
- [
- 5.0,
- 1401352185
- ],
- [
- 5.0,
- 1401352200
- ],
- [
- 5.0,
- 1401352215
- ],
- [
- 5.0,
- 1401352230
- ],
- [
- 5.0,
- 1401352245
- ],
- [
- 5.0,
- 1401352260
- ],
- [
- 5.0,
- 1401352275
- ],
- [
- 5.0,
- 1401352290
- ],
- [
- 5.0,
- 1401352305
- ],
- [
- 5.0,
- 1401352320
- ],
- [
- 5.0,
- 1401352335
- ],
- [
- 5.0,
- 1401352350
- ],
- [
- 5.0,
- 1401352365
- ],
- [
- 5.0,
- 1401352380
- ],
- [
- 5.0,
- 1401352395
- ],
- [
- 5.0,
- 1401352410
- ],
- [
- 5.0,
- 1401352425
- ],
- [
- 5.0,
- 1401352440
- ],
- [
- 5.0,
- 1401352455
- ],
- [
- 5.0,
- 1401352470
- ],
- [
- 5.0,
- 1401352485
- ],
- [
- 5.0,
- 1401352500
- ],
- [
- 5.0,
- 1401352515
- ],
- [
- 5.0,
- 1401352530
- ],
- [
- 5.0,
- 1401352545
- ],
- [
- 5.0,
- 1401352560
- ],
- [
- 5.0,
- 1401352575
- ],
- [
- 5.0,
- 1401352590
- ],
- [
- 5.0,
- 1401352605
- ],
- [
- 5.0,
- 1401352620
- ],
- [
- 5.0,
- 1401352635
- ],
- [
- 5.0,
- 1401352650
- ],
- [
- 5.0,
- 1401352665
- ],
- [
- 5.0,
- 1401352680
- ],
- [
- 5.0,
- 1401352695
- ],
- [
- 5.0,
- 1401352710
- ],
- [
- 5.0,
- 1401352725
- ],
- [
- 5.0,
- 1401352740
- ],
- [
- 5.0,
- 1401352755
- ],
- [
- 5.0,
- 1401352770
- ],
- [
- 5.0,
- 1401352785
- ],
- [
- 5.0,
- 1401352800
- ],
- [
- 5.0,
- 1401352815
- ],
- [
- 5.0,
- 1401352830
- ],
- [
- 5.0,
- 1401352845
- ],
- [
- 5.0,
- 1401352860
- ],
- [
- 5.0,
- 1401352875
- ],
- [
- 5.0,
- 1401352890
- ],
- [
- 5.0,
- 1401352905
- ],
- [
- 5.0,
- 1401352920
- ],
- [
- 5.0,
- 1401352935
- ],
- [
- 5.0,
- 1401352950
- ],
- [
- 5.0,
- 1401352965
- ],
- [
- 5.0,
- 1401352980
- ],
- [
- 5.0,
- 1401352995
- ],
- [
- 5.0,
- 1401353010
- ],
- [
- 5.0,
- 1401353025
- ],
- [
- 5.0,
- 1401353040
- ],
- [
- 5.0,
- 1401353055
- ],
- [
- 5.0,
- 1401353070
- ],
- [
- 5.0,
- 1401353085
- ],
- [
- 5.0,
- 1401353100
- ],
- [
- 5.0,
- 1401353115
- ],
- [
- 5.0,
- 1401353130
- ],
- [
- 5.0,
- 1401353145
- ],
- [
- 5.0,
- 1401353160
- ],
- [
- 5.0,
- 1401353175
- ],
- [
- 5.0,
- 1401353190
- ],
- [
- 5.0,
- 1401353205
- ],
- [
- 5.0,
- 1401353220
- ],
- [
- 5.0,
- 1401353235
- ],
- [
- 5.0,
- 1401353250
- ],
- [
- 5.0,
- 1401353265
- ],
- [
- 5.0,
- 1401353280
- ],
- [
- 5.0,
- 1401353295
- ],
- [
- 5.0,
- 1401353310
- ],
- [
- 5.0,
- 1401353325
- ],
- [
- 5.0,
- 1401353340
- ],
- [
- 5.0,
- 1401353355
- ],
- [
- 5.0,
- 1401353370
- ],
- [
- 5.0,
- 1401353385
- ],
- [
- 5.0,
- 1401353400
- ],
- [
- 5.0,
- 1401353415
- ],
- [
- 5.0,
- 1401353430
- ],
- [
- 5.0,
- 1401353445
- ],
- [
- 5.0,
- 1401353460
- ],
- [
- 5.0,
- 1401353475
- ],
- [
- 5.0,
- 1401353490
- ],
- [
- 5.0,
- 1401353505
- ],
- [
- 5.0,
- 1401353520
- ],
- [
- 5.0,
- 1401353535
- ],
- [
- 5.0,
- 1401353550
- ],
- [
- 5.0,
- 1401353565
- ],
- [
- 5.0,
- 1401353580
- ],
- [
- 5.0,
- 1401353595
- ],
- [
- 5.0,
- 1401353610
- ],
- [
- 5.0,
- 1401353625
- ],
- [
- 5.0,
- 1401353640
- ],
- [
- 5.0,
- 1401353655
- ],
- [
- 5.0,
- 1401353670
- ],
- [
- 5.0,
- 1401353685
- ],
- [
- 5.0,
- 1401353700
- ],
- [
- 5.0,
- 1401353715
- ],
- [
- 5.0,
- 1401353730
- ],
- [
- 5.0,
- 1401353745
- ],
- [
- 5.0,
- 1401353760
- ],
- [
- 5.0,
- 1401353775
- ],
- [
- 5.0,
- 1401353790
- ],
- [
- 5.0,
- 1401353805
- ],
- [
- 5.0,
- 1401353820
- ],
- [
- 5.0,
- 1401353835
- ],
- [
- 5.0,
- 1401353850
- ],
- [
- 5.0,
- 1401353865
- ],
- [
- 5.0,
- 1401353880
- ],
- [
- 5.0,
- 1401353895
- ],
- [
- 5.0,
- 1401353910
- ],
- [
- 5.0,
- 1401353925
- ],
- [
- 5.0,
- 1401353940
- ],
- [
- 5.0,
- 1401353955
- ],
- [
- 5.0,
- 1401353970
- ],
- [
- 5.0,
- 1401353985
- ],
- [
- 5.0,
- 1401354000
- ],
- [
- 5.0,
- 1401354015
- ],
- [
- 5.0,
- 1401354030
- ],
- [
- 5.0,
- 1401354045
- ],
- [
- 5.0,
- 1401354060
- ],
- [
- 5.0,
- 1401354075
- ],
- [
- 5.0,
- 1401354090
- ],
- [
- 5.0,
- 1401354105
- ],
- [
- 5.0,
- 1401354120
- ],
- [
- 5.0,
- 1401354135
- ],
- [
- 5.0,
- 1401354150
- ],
- [
- 5.0,
- 1401354165
- ],
- [
- 5.0,
- 1401354180
- ],
- [
- 5.0,
- 1401354195
- ],
- [
- 5.0,
- 1401354210
- ],
- [
- 5.0,
- 1401354225
- ],
- [
- 5.0,
- 1401354240
- ],
- [
- 5.0,
- 1401354255
- ],
- [
- 5.0,
- 1401354270
- ],
- [
- 5.0,
- 1401354285
- ],
- [
- 5.0,
- 1401354300
- ],
- [
- 5.0,
- 1401354315
- ],
- [
- 5.0,
- 1401354330
- ],
- [
- 5.0,
- 1401354345
- ],
- [
- 5.0,
- 1401354360
- ],
- [
- 5.0,
- 1401354375
- ],
- [
- 5.0,
- 1401354390
- ],
- [
- 5.0,
- 1401354405
- ],
- [
- 5.0,
- 1401354420
- ],
- [
- 5.0,
- 1401354435
- ],
- [
- 5.0,
- 1401354450
- ],
- [
- 5.0,
- 1401354465
- ],
- [
- 5.0,
- 1401354480
- ],
- [
- 5.0,
- 1401354495
- ],
- [
- 5.0,
- 1401354510
- ],
- [
- 5.0,
- 1401354525
- ],
- [
- 5.0,
- 1401354540
- ],
- [
- 5.0,
- 1401354555
- ],
- [
- 5.0,
- 1401354570
- ],
- [
- 5.0,
- 1401354585
- ],
- [
- 5.0,
- 1401354600
- ],
- [
- 5.0,
- 1401354615
- ],
- [
- 5.0,
- 1401354630
- ],
- [
- 5.0,
- 1401354645
- ],
- [
- 5.0,
- 1401354660
- ],
- [
- 5.0,
- 1401354675
- ],
- [
- 5.0,
- 1401354690
- ],
- [
- 5.0,
- 1401354705
- ],
- [
- 5.0,
- 1401354720
- ],
- [
- 5.0,
- 1401354735
- ],
- [
- 5.0,
- 1401354750
- ],
- [
- 5.0,
- 1401354765
- ],
- [
- 5.0,
- 1401354780
- ],
- [
- 5.0,
- 1401354795
- ],
- [
- 5.0,
- 1401354810
- ],
- [
- 5.0,
- 1401354825
- ],
- [
- 5.0,
- 1401354840
- ],
- [
- 5.0,
- 1401354855
- ],
- [
- 5.0,
- 1401354870
- ],
- [
- 5.0,
- 1401354885
- ],
- [
- 5.0,
- 1401354900
- ],
- [
- 5.0,
- 1401354915
- ],
- [
- 5.0,
- 1401354930
- ],
- [
- 5.0,
- 1401354945
- ],
- [
- 5.0,
- 1401354960
- ],
- [
- 5.0,
- 1401354975
- ],
- [
- 5.0,
- 1401354990
- ],
- [
- 5.0,
- 1401355005
- ],
- [
- 5.0,
- 1401355020
- ],
- [
- 5.0,
- 1401355035
- ],
- [
- 5.0,
- 1401355050
- ],
- [
- 5.0,
- 1401355065
- ]
- ],
- "CapacityTotalGB" : [
- [
- 9.0,
- 1401351555
- ],
- [
- 9.0,
- 1401351570
- ],
- [
- 9.0,
- 1401351585
- ],
- [
- 9.0,
- 1401351600
- ],
- [
- 9.0,
- 1401351615
- ],
- [
- 9.0,
- 1401351630
- ],
- [
- 9.0,
- 1401351645
- ],
- [
- 9.0,
- 1401351660
- ],
- [
- 9.0,
- 1401351675
- ],
- [
- 9.0,
- 1401351690
- ],
- [
- 9.0,
- 1401351705
- ],
- [
- 9.0,
- 1401351720
- ],
- [
- 9.0,
- 1401351735
- ],
- [
- 9.0,
- 1401351750
- ],
- [
- 9.0,
- 1401351765
- ],
- [
- 9.0,
- 1401351780
- ],
- [
- 9.0,
- 1401351795
- ],
- [
- 9.0,
- 1401351810
- ],
- [
- 9.0,
- 1401351825
- ],
- [
- 9.0,
- 1401351840
- ],
- [
- 9.0,
- 1401351855
- ],
- [
- 9.0,
- 1401351870
- ],
- [
- 9.0,
- 1401351885
- ],
- [
- 9.0,
- 1401351900
- ],
- [
- 9.0,
- 1401351915
- ],
- [
- 9.0,
- 1401351930
- ],
- [
- 9.0,
- 1401351945
- ],
- [
- 9.0,
- 1401351960
- ],
- [
- 9.0,
- 1401351975
- ],
- [
- 9.0,
- 1401351990
- ],
- [
- 9.0,
- 1401352005
- ],
- [
- 9.0,
- 1401352020
- ],
- [
- 9.0,
- 1401352035
- ],
- [
- 9.0,
- 1401352050
- ],
- [
- 9.0,
- 1401352065
- ],
- [
- 9.0,
- 1401352080
- ],
- [
- 9.0,
- 1401352095
- ],
- [
- 9.0,
- 1401352110
- ],
- [
- 9.0,
- 1401352125
- ],
- [
- 9.0,
- 1401352140
- ],
- [
- 9.0,
- 1401352155
- ],
- [
- 9.0,
- 1401352170
- ],
- [
- 9.0,
- 1401352185
- ],
- [
- 9.0,
- 1401352200
- ],
- [
- 9.0,
- 1401352215
- ],
- [
- 9.0,
- 1401352230
- ],
- [
- 9.0,
- 1401352245
- ],
- [
- 9.0,
- 1401352260
- ],
- [
- 9.0,
- 1401352275
- ],
- [
- 9.0,
- 1401352290
- ],
- [
- 9.0,
- 1401352305
- ],
- [
- 9.0,
- 1401352320
- ],
- [
- 9.0,
- 1401352335
- ],
- [
- 9.0,
- 1401352350
- ],
- [
- 9.0,
- 1401352365
- ],
- [
- 9.0,
- 1401352380
- ],
- [
- 9.0,
- 1401352395
- ],
- [
- 9.0,
- 1401352410
- ],
- [
- 9.0,
- 1401352425
- ],
- [
- 9.0,
- 1401352440
- ],
- [
- 9.0,
- 1401352455
- ],
- [
- 9.0,
- 1401352470
- ],
- [
- 9.0,
- 1401352485
- ],
- [
- 9.0,
- 1401352500
- ],
- [
- 9.0,
- 1401352515
- ],
- [
- 9.0,
- 1401352530
- ],
- [
- 9.0,
- 1401352545
- ],
- [
- 9.0,
- 1401352560
- ],
- [
- 9.0,
- 1401352575
- ],
- [
- 9.0,
- 1401352590
- ],
- [
- 9.0,
- 1401352605
- ],
- [
- 9.0,
- 1401352620
- ],
- [
- 9.0,
- 1401352635
- ],
- [
- 9.0,
- 1401352650
- ],
- [
- 9.0,
- 1401352665
- ],
- [
- 9.0,
- 1401352680
- ],
- [
- 9.0,
- 1401352695
- ],
- [
- 9.0,
- 1401352710
- ],
- [
- 9.0,
- 1401352725
- ],
- [
- 9.0,
- 1401352740
- ],
- [
- 9.0,
- 1401352755
- ],
- [
- 9.0,
- 1401352770
- ],
- [
- 9.0,
- 1401352785
- ],
- [
- 9.0,
- 1401352800
- ],
- [
- 9.0,
- 1401352815
- ],
- [
- 9.0,
- 1401352830
- ],
- [
- 9.0,
- 1401352845
- ],
- [
- 9.0,
- 1401352860
- ],
- [
- 9.0,
- 1401352875
- ],
- [
- 9.0,
- 1401352890
- ],
- [
- 9.0,
- 1401352905
- ],
- [
- 9.0,
- 1401352920
- ],
- [
- 9.0,
- 1401352935
- ],
- [
- 9.0,
- 1401352950
- ],
- [
- 9.0,
- 1401352965
- ],
- [
- 9.0,
- 1401352980
- ],
- [
- 9.0,
- 1401352995
- ],
- [
- 9.0,
- 1401353010
- ],
- [
- 9.0,
- 1401353025
- ],
- [
- 9.0,
- 1401353040
- ],
- [
- 9.0,
- 1401353055
- ],
- [
- 9.0,
- 1401353070
- ],
- [
- 9.0,
- 1401353085
- ],
- [
- 9.0,
- 1401353100
- ],
- [
- 9.0,
- 1401353115
- ],
- [
- 9.0,
- 1401353130
- ],
- [
- 9.0,
- 1401353145
- ],
- [
- 9.0,
- 1401353160
- ],
- [
- 9.0,
- 1401353175
- ],
- [
- 9.0,
- 1401353190
- ],
- [
- 9.0,
- 1401353205
- ],
- [
- 9.0,
- 1401353220
- ],
- [
- 9.0,
- 1401353235
- ],
- [
- 9.0,
- 1401353250
- ],
- [
- 9.0,
- 1401353265
- ],
- [
- 9.0,
- 1401353280
- ],
- [
- 9.0,
- 1401353295
- ],
- [
- 9.0,
- 1401353310
- ],
- [
- 9.0,
- 1401353325
- ],
- [
- 9.0,
- 1401353340
- ],
- [
- 9.0,
- 1401353355
- ],
- [
- 9.0,
- 1401353370
- ],
- [
- 9.0,
- 1401353385
- ],
- [
- 9.0,
- 1401353400
- ],
- [
- 9.0,
- 1401353415
- ],
- [
- 9.0,
- 1401353430
- ],
- [
- 9.0,
- 1401353445
- ],
- [
- 9.0,
- 1401353460
- ],
- [
- 9.0,
- 1401353475
- ],
- [
- 9.0,
- 1401353490
- ],
- [
- 9.0,
- 1401353505
- ],
- [
- 9.0,
- 1401353520
- ],
- [
- 9.0,
- 1401353535
- ],
- [
- 9.0,
- 1401353550
- ],
- [
- 9.0,
- 1401353565
- ],
- [
- 9.0,
- 1401353580
- ],
- [
- 9.0,
- 1401353595
- ],
- [
- 9.0,
- 1401353610
- ],
- [
- 9.0,
- 1401353625
- ],
- [
- 9.0,
- 1401353640
- ],
- [
- 9.0,
- 1401353655
- ],
- [
- 9.0,
- 1401353670
- ],
- [
- 9.0,
- 1401353685
- ],
- [
- 9.0,
- 1401353700
- ],
- [
- 9.0,
- 1401353715
- ],
- [
- 9.0,
- 1401353730
- ],
- [
- 9.0,
- 1401353745
- ],
- [
- 9.0,
- 1401353760
- ],
- [
- 9.0,
- 1401353775
- ],
- [
- 9.0,
- 1401353790
- ],
- [
- 9.0,
- 1401353805
- ],
- [
- 9.0,
- 1401353820
- ],
- [
- 9.0,
- 1401353835
- ],
- [
- 9.0,
- 1401353850
- ],
- [
- 9.0,
- 1401353865
- ],
- [
- 9.0,
- 1401353880
- ],
- [
- 9.0,
- 1401353895
- ],
- [
- 9.0,
- 1401353910
- ],
- [
- 9.0,
- 1401353925
- ],
- [
- 9.0,
- 1401353940
- ],
- [
- 9.0,
- 1401353955
- ],
- [
- 9.0,
- 1401353970
- ],
- [
- 9.0,
- 1401353985
- ],
- [
- 9.0,
- 1401354000
- ],
- [
- 9.0,
- 1401354015
- ],
- [
- 9.0,
- 1401354030
- ],
- [
- 9.0,
- 1401354045
- ],
- [
- 9.0,
- 1401354060
- ],
- [
- 9.0,
- 1401354075
- ],
- [
- 9.0,
- 1401354090
- ],
- [
- 9.0,
- 1401354105
- ],
- [
- 9.0,
- 1401354120
- ],
- [
- 9.0,
- 1401354135
- ],
- [
- 9.0,
- 1401354150
- ],
- [
- 9.0,
- 1401354165
- ],
- [
- 9.0,
- 1401354180
- ],
- [
- 9.0,
- 1401354195
- ],
- [
- 9.0,
- 1401354210
- ],
- [
- 9.0,
- 1401354225
- ],
- [
- 9.0,
- 1401354240
- ],
- [
- 9.0,
- 1401354255
- ],
- [
- 9.0,
- 1401354270
- ],
- [
- 9.0,
- 1401354285
- ],
- [
- 9.0,
- 1401354300
- ],
- [
- 9.0,
- 1401354315
- ],
- [
- 9.0,
- 1401354330
- ],
- [
- 9.0,
- 1401354345
- ],
- [
- 9.0,
- 1401354360
- ],
- [
- 9.0,
- 1401354375
- ],
- [
- 9.0,
- 1401354390
- ],
- [
- 9.0,
- 1401354405
- ],
- [
- 9.0,
- 1401354420
- ],
- [
- 9.0,
- 1401354435
- ],
- [
- 9.0,
- 1401354450
- ],
- [
- 9.0,
- 1401354465
- ],
- [
- 9.0,
- 1401354480
- ],
- [
- 9.0,
- 1401354495
- ],
- [
- 9.0,
- 1401354510
- ],
- [
- 9.0,
- 1401354525
- ],
- [
- 9.0,
- 1401354540
- ],
- [
- 9.0,
- 1401354555
- ],
- [
- 9.0,
- 1401354570
- ],
- [
- 9.0,
- 1401354585
- ],
- [
- 9.0,
- 1401354600
- ],
- [
- 9.0,
- 1401354615
- ],
- [
- 9.0,
- 1401354630
- ],
- [
- 9.0,
- 1401354645
- ],
- [
- 9.0,
- 1401354660
- ],
- [
- 9.0,
- 1401354675
- ],
- [
- 9.0,
- 1401354690
- ],
- [
- 9.0,
- 1401354705
- ],
- [
- 9.0,
- 1401354720
- ],
- [
- 9.0,
- 1401354735
- ],
- [
- 9.0,
- 1401354750
- ],
- [
- 9.0,
- 1401354765
- ],
- [
- 9.0,
- 1401354780
- ],
- [
- 9.0,
- 1401354795
- ],
- [
- 9.0,
- 1401354810
- ],
- [
- 9.0,
- 1401354825
- ],
- [
- 9.0,
- 1401354840
- ],
- [
- 9.0,
- 1401354855
- ],
- [
- 9.0,
- 1401354870
- ],
- [
- 9.0,
- 1401354885
- ],
- [
- 9.0,
- 1401354900
- ],
- [
- 9.0,
- 1401354915
- ],
- [
- 9.0,
- 1401354930
- ],
- [
- 9.0,
- 1401354945
- ],
- [
- 9.0,
- 1401354960
- ],
- [
- 9.0,
- 1401354975
- ],
- [
- 9.0,
- 1401354990
- ],
- [
- 9.0,
- 1401355005
- ]
- ],
- "CapacityUsedGB" : [
- [
- 0.0,
- 1401351555
- ],
- [
- 0.0,
- 1401351570
- ],
- [
- 0.0,
- 1401351585
- ],
- [
- 0.0,
- 1401351600
- ],
- [
- 0.0,
- 1401351615
- ],
- [
- 0.0,
- 1401351630
- ],
- [
- 0.0,
- 1401351645
- ],
- [
- 0.0,
- 1401351660
- ],
- [
- 0.0,
- 1401351675
- ],
- [
- 0.0,
- 1401351690
- ],
- [
- 0.0,
- 1401351705
- ],
- [
- 0.0,
- 1401351720
- ],
- [
- 0.0,
- 1401351735
- ],
- [
- 0.0,
- 1401351750
- ],
- [
- 0.0,
- 1401351765
- ],
- [
- 0.0,
- 1401351780
- ],
- [
- 0.0,
- 1401351795
- ],
- [
- 0.0,
- 1401351810
- ],
- [
- 0.0,
- 1401351825
- ],
- [
- 0.0,
- 1401351840
- ],
- [
- 0.0,
- 1401351855
- ],
- [
- 0.0,
- 1401351870
- ],
- [
- 0.0,
- 1401351885
- ],
- [
- 0.0,
- 1401351900
- ],
- [
- 0.0,
- 1401351915
- ],
- [
- 0.0,
- 1401351930
- ],
- [
- 0.0,
- 1401351945
- ],
- [
- 0.0,
- 1401351960
- ],
- [
- 0.0,
- 1401351975
- ],
- [
- 0.0,
- 1401351990
- ],
- [
- 0.0,
- 1401352005
- ],
- [
- 0.0,
- 1401352020
- ],
- [
- 0.0,
- 1401352035
- ],
- [
- 0.0,
- 1401352050
- ],
- [
- 0.0,
- 1401352065
- ],
- [
- 0.0,
- 1401352080
- ],
- [
- 0.0,
- 1401352095
- ],
- [
- 0.0,
- 1401352110
- ],
- [
- 0.0,
- 1401352125
- ],
- [
- 0.0,
- 1401352140
- ],
- [
- 0.0,
- 1401352155
- ],
- [
- 0.0,
- 1401352170
- ],
- [
- 0.0,
- 1401352185
- ],
- [
- 0.0,
- 1401352200
- ],
- [
- 0.0,
- 1401352215
- ],
- [
- 0.0,
- 1401352230
- ],
- [
- 0.0,
- 1401352245
- ],
- [
- 0.0,
- 1401352260
- ],
- [
- 0.0,
- 1401352275
- ],
- [
- 0.0,
- 1401352290
- ],
- [
- 0.0,
- 1401352305
- ],
- [
- 0.0,
- 1401352320
- ],
- [
- 0.0,
- 1401352335
- ],
- [
- 0.0,
- 1401352350
- ],
- [
- 0.0,
- 1401352365
- ],
- [
- 0.0,
- 1401352380
- ],
- [
- 0.0,
- 1401352395
- ],
- [
- 0.0,
- 1401352410
- ],
- [
- 0.0,
- 1401352425
- ],
- [
- 0.0,
- 1401352440
- ],
- [
- 0.0,
- 1401352455
- ],
- [
- 0.0,
- 1401352470
- ],
- [
- 0.0,
- 1401352485
- ],
- [
- 0.0,
- 1401352500
- ],
- [
- 0.0,
- 1401352515
- ],
- [
- 0.0,
- 1401352530
- ],
- [
- 0.0,
- 1401352545
- ],
- [
- 0.0,
- 1401352560
- ],
- [
- 0.0,
- 1401352575
- ],
- [
- 0.0,
- 1401352590
- ],
- [
- 0.0,
- 1401352605
- ],
- [
- 0.0,
- 1401352620
- ],
- [
- 0.0,
- 1401352635
- ],
- [
- 0.0,
- 1401352650
- ],
- [
- 0.0,
- 1401352665
- ],
- [
- 0.0,
- 1401352680
- ],
- [
- 0.0,
- 1401352695
- ],
- [
- 0.0,
- 1401352710
- ],
- [
- 0.0,
- 1401352725
- ],
- [
- 0.0,
- 1401352740
- ],
- [
- 0.0,
- 1401352755
- ],
- [
- 0.0,
- 1401352770
- ],
- [
- 0.0,
- 1401352785
- ],
- [
- 0.0,
- 1401352800
- ],
- [
- 0.0,
- 1401352815
- ],
- [
- 0.0,
- 1401352830
- ],
- [
- 0.0,
- 1401352845
- ],
- [
- 0.0,
- 1401352860
- ],
- [
- 0.0,
- 1401352875
- ],
- [
- 0.0,
- 1401352890
- ],
- [
- 0.0,
- 1401352905
- ],
- [
- 0.0,
- 1401352920
- ],
- [
- 0.0,
- 1401352935
- ],
- [
- 0.0,
- 1401352950
- ],
- [
- 0.0,
- 1401352965
- ],
- [
- 0.0,
- 1401352980
- ],
- [
- 0.0,
- 1401352995
- ],
- [
- 0.0,
- 1401353010
- ],
- [
- 0.0,
- 1401353025
- ],
- [
- 0.0,
- 1401353040
- ],
- [
- 0.0,
- 1401353055
- ],
- [
- 0.0,
- 1401353070
- ],
- [
- 0.0,
- 1401353085
- ],
- [
- 0.0,
- 1401353100
- ],
- [
- 0.0,
- 1401353115
- ],
- [
- 0.0,
- 1401353130
- ],
- [
- 0.0,
- 1401353145
- ],
- [
- 0.0,
- 1401353160
- ],
- [
- 0.0,
- 1401353175
- ],
- [
- 0.0,
- 1401353190
- ],
- [
- 0.0,
- 1401353205
- ],
- [
- 0.0,
- 1401353220
- ],
- [
- 0.0,
- 1401353235
- ],
- [
- 0.0,
- 1401353250
- ],
- [
- 0.0,
- 1401353265
- ],
- [
- 0.0,
- 1401353280
- ],
- [
- 0.0,
- 1401353295
- ],
- [
- 0.0,
- 1401353310
- ],
- [
- 0.0,
- 1401353325
- ],
- [
- 0.0,
- 1401353340
- ],
- [
- 0.0,
- 1401353355
- ],
- [
- 0.0,
- 1401353370
- ],
- [
- 0.0,
- 1401353385
- ],
- [
- 0.0,
- 1401353400
- ],
- [
- 0.0,
- 1401353415
- ],
- [
- 0.0,
- 1401353430
- ],
- [
- 0.0,
- 1401353445
- ],
- [
- 0.0,
- 1401353460
- ],
- [
- 0.0,
- 1401353475
- ],
- [
- 0.0,
- 1401353490
- ],
- [
- 0.0,
- 1401353505
- ],
- [
- 0.0,
- 1401353520
- ],
- [
- 0.0,
- 1401353535
- ],
- [
- 0.0,
- 1401353550
- ],
- [
- 0.0,
- 1401353565
- ],
- [
- 0.0,
- 1401353580
- ],
- [
- 0.0,
- 1401353595
- ],
- [
- 0.0,
- 1401353610
- ],
- [
- 0.0,
- 1401353625
- ],
- [
- 0.0,
- 1401353640
- ],
- [
- 0.0,
- 1401353655
- ],
- [
- 0.0,
- 1401353670
- ],
- [
- 0.0,
- 1401353685
- ],
- [
- 0.0,
- 1401353700
- ],
- [
- 0.0,
- 1401353715
- ],
- [
- 0.0,
- 1401353730
- ],
- [
- 0.0,
- 1401353745
- ],
- [
- 0.0,
- 1401353760
- ],
- [
- 0.0,
- 1401353775
- ],
- [
- 0.0,
- 1401353790
- ],
- [
- 0.0,
- 1401353805
- ],
- [
- 0.0,
- 1401353820
- ],
- [
- 0.0,
- 1401353835
- ],
- [
- 0.0,
- 1401353850
- ],
- [
- 0.0,
- 1401353865
- ],
- [
- 0.0,
- 1401353880
- ],
- [
- 0.0,
- 1401353895
- ],
- [
- 0.0,
- 1401353910
- ],
- [
- 0.0,
- 1401353925
- ],
- [
- 0.0,
- 1401353940
- ],
- [
- 0.0,
- 1401353955
- ],
- [
- 0.0,
- 1401353970
- ],
- [
- 0.0,
- 1401353985
- ],
- [
- 0.0,
- 1401354000
- ],
- [
- 0.0,
- 1401354015
- ],
- [
- 0.0,
- 1401354030
- ],
- [
- 0.0,
- 1401354045
- ],
- [
- 0.0,
- 1401354060
- ],
- [
- 0.0,
- 1401354075
- ],
- [
- 0.0,
- 1401354090
- ],
- [
- 0.0,
- 1401354105
- ],
- [
- 0.0,
- 1401354120
- ],
- [
- 0.0,
- 1401354135
- ],
- [
- 0.0,
- 1401354150
- ],
- [
- 0.0,
- 1401354165
- ],
- [
- 0.0,
- 1401354180
- ],
- [
- 0.0,
- 1401354195
- ],
- [
- 0.0,
- 1401354210
- ],
- [
- 0.0,
- 1401354225
- ],
- [
- 0.0,
- 1401354240
- ],
- [
- 0.0,
- 1401354255
- ],
- [
- 0.0,
- 1401354270
- ],
- [
- 0.0,
- 1401354285
- ],
- [
- 0.0,
- 1401354300
- ],
- [
- 0.0,
- 1401354315
- ],
- [
- 0.0,
- 1401354330
- ],
- [
- 0.0,
- 1401354345
- ],
- [
- 0.0,
- 1401354360
- ],
- [
- 0.0,
- 1401354375
- ],
- [
- 0.0,
- 1401354390
- ],
- [
- 0.0,
- 1401354405
- ],
- [
- 0.0,
- 1401354420
- ],
- [
- 0.0,
- 1401354435
- ],
- [
- 0.0,
- 1401354450
- ],
- [
- 0.0,
- 1401354465
- ],
- [
- 0.0,
- 1401354480
- ],
- [
- 0.0,
- 1401354495
- ],
- [
- 0.0,
- 1401354510
- ],
- [
- 0.0,
- 1401354525
- ],
- [
- 0.0,
- 1401354540
- ],
- [
- 0.0,
- 1401354555
- ],
- [
- 0.0,
- 1401354570
- ],
- [
- 0.0,
- 1401354585
- ],
- [
- 0.0,
- 1401354600
- ],
- [
- 0.0,
- 1401354615
- ],
- [
- 0.0,
- 1401354630
- ],
- [
- 0.0,
- 1401354645
- ],
- [
- 0.0,
- 1401354660
- ],
- [
- 0.0,
- 1401354675
- ],
- [
- 0.0,
- 1401354690
- ],
- [
- 0.0,
- 1401354705
- ],
- [
- 0.0,
- 1401354720
- ],
- [
- 0.0,
- 1401354735
- ],
- [
- 0.0,
- 1401354750
- ],
- [
- 0.0,
- 1401354765
- ],
- [
- 0.0,
- 1401354780
- ],
- [
- 0.0,
- 1401354795
- ],
- [
- 0.0,
- 1401354810
- ],
- [
- 0.0,
- 1401354825
- ],
- [
- 0.0,
- 1401354840
- ],
- [
- 0.0,
- 1401354855
- ],
- [
- 0.0,
- 1401354870
- ],
- [
- 0.0,
- 1401354885
- ],
- [
- 0.0,
- 1401354900
- ],
- [
- 0.0,
- 1401354915
- ],
- [
- 0.0,
- 1401354930
- ],
- [
- 0.0,
- 1401354945
- ],
- [
- 0.0,
- 1401354960
- ],
- [
- 0.0,
- 1401354975
- ],
- [
- 0.0,
- 1401354990
- ],
- [
- 0.0,
- 1401355005
- ],
- [
- 0.0,
- 1401355020
- ],
- [
- 0.0,
- 1401355035
- ],
- [
- 0.0,
- 1401355050
- ],
- [
- 0.0,
- 1401355065
- ]
- ]
- }
- }
- }
-}
[2/8] Revert "AMBARI-5928. Create and populate Metrics section of a
slider app. (onechiporenko)" - changes made in ambari-web
Posted by sr...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/rickshaw.js
----------------------------------------------------------------------
diff --git a/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/rickshaw.js b/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/rickshaw.js
deleted file mode 100644
index 6beb828..0000000
--- a/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/rickshaw.js
+++ /dev/null
@@ -1,2659 +0,0 @@
-var Rickshaw = {
-
- namespace: function(namespace, obj) {
-
- var parts = namespace.split('.');
-
- var parent = Rickshaw;
-
- for(var i = 1, length = parts.length; i < length; i++) {
- currentPart = parts[i];
- parent[currentPart] = parent[currentPart] || {};
- parent = parent[currentPart];
- }
- return parent;
- },
-
- keys: function(obj) {
- var keys = [];
- for (var key in obj) keys.push(key);
- return keys;
- },
-
- extend: function(destination, source) {
-
- for (var property in source) {
- destination[property] = source[property];
- }
- return destination;
- }
-};
-
-if (typeof module !== 'undefined' && module.exports) {
- var d3 = require('d3');
- module.exports = Rickshaw;
-}
-
-/* Adapted from https://github.com/Jakobo/PTClass */
-
-/*
-Copyright (c) 2005-2010 Sam Stephenson
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-/* Based on Alex Arnell's inheritance implementation. */
-/** section: Language
- * class Class
- *
- * Manages Prototype's class-based OOP system.
- *
- * Refer to Prototype's web site for a [tutorial on classes and
- * inheritance](http://prototypejs.org/learn/class-inheritance).
-**/
-(function(globalContext) {
-/* ------------------------------------ */
-/* Import from object.js */
-/* ------------------------------------ */
-var _toString = Object.prototype.toString,
- NULL_TYPE = 'Null',
- UNDEFINED_TYPE = 'Undefined',
- BOOLEAN_TYPE = 'Boolean',
- NUMBER_TYPE = 'Number',
- STRING_TYPE = 'String',
- OBJECT_TYPE = 'Object',
- FUNCTION_CLASS = '[object Function]';
-function isFunction(object) {
- return _toString.call(object) === FUNCTION_CLASS;
-}
-function extend(destination, source) {
- for (var property in source) if (source.hasOwnProperty(property)) // modify protect primitive slaughter
- destination[property] = source[property];
- return destination;
-}
-function keys(object) {
- if (Type(object) !== OBJECT_TYPE) { throw new TypeError(); }
- var results = [];
- for (var property in object) {
- if (object.hasOwnProperty(property)) {
- results.push(property);
- }
- }
- return results;
-}
-function Type(o) {
- switch(o) {
- case null: return NULL_TYPE;
- case (void 0): return UNDEFINED_TYPE;
- }
- var type = typeof o;
- switch(type) {
- case 'boolean': return BOOLEAN_TYPE;
- case 'number': return NUMBER_TYPE;
- case 'string': return STRING_TYPE;
- }
- return OBJECT_TYPE;
-}
-function isUndefined(object) {
- return typeof object === "undefined";
-}
-/* ------------------------------------ */
-/* Import from Function.js */
-/* ------------------------------------ */
-var slice = Array.prototype.slice;
-function argumentNames(fn) {
- var names = fn.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1]
- .replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '')
- .replace(/\s+/g, '').split(',');
- return names.length == 1 && !names[0] ? [] : names;
-}
-function wrap(fn, wrapper) {
- var __method = fn;
- return function() {
- var a = update([bind(__method, this)], arguments);
- return wrapper.apply(this, a);
- }
-}
-function update(array, args) {
- var arrayLength = array.length, length = args.length;
- while (length--) array[arrayLength + length] = args[length];
- return array;
-}
-function merge(array, args) {
- array = slice.call(array, 0);
- return update(array, args);
-}
-function bind(fn, context) {
- if (arguments.length < 2 && isUndefined(arguments[0])) return this;
- var __method = fn, args = slice.call(arguments, 2);
- return function() {
- var a = merge(args, arguments);
- return __method.apply(context, a);
- }
-}
-
-/* ------------------------------------ */
-/* Import from Prototype.js */
-/* ------------------------------------ */
-var emptyFunction = function(){};
-
-var Class = (function() {
-
- // Some versions of JScript fail to enumerate over properties, names of which
- // correspond to non-enumerable properties in the prototype chain
- var IS_DONTENUM_BUGGY = (function(){
- for (var p in { toString: 1 }) {
- // check actual property name, so that it works with augmented Object.prototype
- if (p === 'toString') return false;
- }
- return true;
- })();
-
- function subclass() {};
- function create() {
- var parent = null, properties = [].slice.apply(arguments);
- if (isFunction(properties[0]))
- parent = properties.shift();
-
- function klass() {
- this.initialize.apply(this, arguments);
- }
-
- extend(klass, Class.Methods);
- klass.superclass = parent;
- klass.subclasses = [];
-
- if (parent) {
- subclass.prototype = parent.prototype;
- klass.prototype = new subclass;
- try { parent.subclasses.push(klass) } catch(e) {}
- }
-
- for (var i = 0, length = properties.length; i < length; i++)
- klass.addMethods(properties[i]);
-
- if (!klass.prototype.initialize)
- klass.prototype.initialize = emptyFunction;
-
- klass.prototype.constructor = klass;
- return klass;
- }
-
- function addMethods(source) {
- var ancestor = this.superclass && this.superclass.prototype,
- properties = keys(source);
-
- // IE6 doesn't enumerate `toString` and `valueOf` (among other built-in `Object.prototype`) properties,
- // Force copy if they're not Object.prototype ones.
- // Do not copy other Object.prototype.* for performance reasons
- if (IS_DONTENUM_BUGGY) {
- if (source.toString != Object.prototype.toString)
- properties.push("toString");
- if (source.valueOf != Object.prototype.valueOf)
- properties.push("valueOf");
- }
-
- for (var i = 0, length = properties.length; i < length; i++) {
- var property = properties[i], value = source[property];
- if (ancestor && isFunction(value) &&
- argumentNames(value)[0] == "$super") {
- var method = value;
- value = wrap((function(m) {
- return function() { return ancestor[m].apply(this, arguments); };
- })(property), method);
-
- value.valueOf = bind(method.valueOf, method);
- value.toString = bind(method.toString, method);
- }
- this.prototype[property] = value;
- }
-
- return this;
- }
-
- return {
- create: create,
- Methods: {
- addMethods: addMethods
- }
- };
-})();
-
-if (globalContext.exports) {
- globalContext.exports.Class = Class;
-}
-else {
- globalContext.Class = Class;
-}
-})(Rickshaw);
-Rickshaw.namespace('Rickshaw.Compat.ClassList');
-
-Rickshaw.Compat.ClassList = function() {
-
- /* adapted from http://purl.eligrey.com/github/classList.js/blob/master/classList.js */
-
- if (typeof document !== "undefined" && !("classList" in document.createElement("a"))) {
-
- (function (view) {
-
- "use strict";
-
- var
- classListProp = "classList"
- , protoProp = "prototype"
- , elemCtrProto = (view.HTMLElement || view.Element)[protoProp]
- , objCtr = Object
- , strTrim = String[protoProp].trim || function () {
- return this.replace(/^\s+|\s+$/g, "");
- }
- , arrIndexOf = Array[protoProp].indexOf || function (item) {
- var
- i = 0
- , len = this.length
- ;
- for (; i < len; i++) {
- if (i in this && this[i] === item) {
- return i;
- }
- }
- return -1;
- }
- // Vendors: please allow content code to instantiate DOMExceptions
- , DOMEx = function (type, message) {
- this.name = type;
- this.code = DOMException[type];
- this.message = message;
- }
- , checkTokenAndGetIndex = function (classList, token) {
- if (token === "") {
- throw new DOMEx(
- "SYNTAX_ERR"
- , "An invalid or illegal string was specified"
- );
- }
- if (/\s/.test(token)) {
- throw new DOMEx(
- "INVALID_CHARACTER_ERR"
- , "String contains an invalid character"
- );
- }
- return arrIndexOf.call(classList, token);
- }
- , ClassList = function (elem) {
- var
- trimmedClasses = strTrim.call(elem.className)
- , classes = trimmedClasses ? trimmedClasses.split(/\s+/) : []
- , i = 0
- , len = classes.length
- ;
- for (; i < len; i++) {
- this.push(classes[i]);
- }
- this._updateClassName = function () {
- elem.className = this.toString();
- };
- }
- , classListProto = ClassList[protoProp] = []
- , classListGetter = function () {
- return new ClassList(this);
- }
- ;
- // Most DOMException implementations don't allow calling DOMException's toString()
- // on non-DOMExceptions. Error's toString() is sufficient here.
- DOMEx[protoProp] = Error[protoProp];
- classListProto.item = function (i) {
- return this[i] || null;
- };
- classListProto.contains = function (token) {
- token += "";
- return checkTokenAndGetIndex(this, token) !== -1;
- };
- classListProto.add = function (token) {
- token += "";
- if (checkTokenAndGetIndex(this, token) === -1) {
- this.push(token);
- this._updateClassName();
- }
- };
- classListProto.remove = function (token) {
- token += "";
- var index = checkTokenAndGetIndex(this, token);
- if (index !== -1) {
- this.splice(index, 1);
- this._updateClassName();
- }
- };
- classListProto.toggle = function (token) {
- token += "";
- if (checkTokenAndGetIndex(this, token) === -1) {
- this.add(token);
- } else {
- this.remove(token);
- }
- };
- classListProto.toString = function () {
- return this.join(" ");
- };
-
- if (objCtr.defineProperty) {
- var classListPropDesc = {
- get: classListGetter
- , enumerable: true
- , configurable: true
- };
- try {
- objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);
- } catch (ex) { // IE 8 doesn't support enumerable:true
- if (ex.number === -0x7FF5EC54) {
- classListPropDesc.enumerable = false;
- objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);
- }
- }
- } else if (objCtr[protoProp].__defineGetter__) {
- elemCtrProto.__defineGetter__(classListProp, classListGetter);
- }
-
- }(window));
-
- }
-};
-
-if ( (typeof RICKSHAW_NO_COMPAT !== "undefined" && !RICKSHAW_NO_COMPAT) || typeof RICKSHAW_NO_COMPAT === "undefined") {
- new Rickshaw.Compat.ClassList();
-}
-Rickshaw.namespace('Rickshaw.Graph');
-
-Rickshaw.Graph = function(args) {
-
- this.element = args.element;
- this.series = args.series;
-
- this.defaults = {
- interpolation: 'cardinal',
- offset: 'zero',
- min: undefined,
- max: undefined
- };
-
- Rickshaw.keys(this.defaults).forEach( function(k) {
- this[k] = args[k] || this.defaults[k];
- }, this );
-
- this.window = {};
-
- this.updateCallbacks = [];
-
- var self = this;
-
- this.initialize = function(args) {
-
- this.validateSeries(args.series);
-
- this.series.active = function() { return self.series.filter( function(s) { return !s.disabled } ) };
-
- this.setSize({ width: args.width, height: args.height });
-
- this.element.classList.add('rickshaw_graph');
- this.vis = d3.select(this.element)
- .append("svg:svg")
- .attr('width', this.width)
- .attr('height', this.height);
-
- var renderers = [
- Rickshaw.Graph.Renderer.Stack,
- Rickshaw.Graph.Renderer.Line,
- Rickshaw.Graph.Renderer.Bar,
- Rickshaw.Graph.Renderer.Area,
- Rickshaw.Graph.Renderer.ScatterPlot
- ];
-
- renderers.forEach( function(r) {
- if (!r) return;
- self.registerRenderer(new r( { graph: self } ));
- } );
-
- this.setRenderer(args.renderer || 'stack', args);
- this.discoverRange();
- };
-
- this.validateSeries = function(series) {
-
- if (!(series instanceof Array) && !(series instanceof Rickshaw.Series)) {
- var seriesSignature = Object.prototype.toString.apply(series);
- throw "series is not an array: " + seriesSignature;
- }
-
- var pointsCount;
-
- series.forEach( function(s) {
-
- if (!(s instanceof Object)) {
- throw "series element is not an object: " + s;
- }
- if (!(s.data)) {
- throw "series has no data: " + JSON.stringify(s);
- }
- if (!(s.data instanceof Array)) {
- throw "series data is not an array: " + JSON.stringify(s.data);
- }
-
- pointsCount = pointsCount || s.data.length;
-
- if (pointsCount && s.data.length != pointsCount) {
- throw "series cannot have differing numbers of points: " +
- pointsCount + " vs " + s.data.length + "; see Rickshaw.Series.zeroFill()";
- }
-
- var dataTypeX = typeof s.data[0].x;
- var dataTypeY = typeof s.data[0].y;
-
- if (dataTypeX != 'number' || dataTypeY != 'number') {
- throw "x and y properties of points should be numbers instead of " +
- dataTypeX + " and " + dataTypeY;
- }
- } );
- };
-
- this.dataDomain = function() {
-
- // take from the first series
- var data = this.series[0].data;
-
- return [ data[0].x, data.slice(-1).shift().x ];
-
- };
-
- this.discoverRange = function() {
-
- var domain = this.renderer.domain();
-
- this.x = d3.scale.linear().domain(domain.x).range([0, this.width]);
-
- this.y = d3.scale.linear().domain(domain.y).range([this.height, 0]);
-
- this.y.magnitude = d3.scale.linear()
- .domain([domain.y[0] - domain.y[0], domain.y[1] - domain.y[0]])
- .range([0, this.height]);
- };
-
- this.render = function() {
-
- var stackedData = this.stackData();
- this.discoverRange();
-
- this.renderer.render();
-
- this.updateCallbacks.forEach( function(callback) {
- callback();
- } );
- };
-
- this.update = this.render;
-
- this.stackData = function() {
-
- var data = this.series.active()
- .map( function(d) { return d.data } )
- .map( function(d) { return d.filter( function(d) { return this._slice(d) }, this ) }, this);
-
- this.stackData.hooks.data.forEach( function(entry) {
- data = entry.f.apply(self, [data]);
- } );
-
- var layout = d3.layout.stack();
- layout.offset( self.offset );
-
- var stackedData = layout(data);
-
- this.stackData.hooks.after.forEach( function(entry) {
- stackedData = entry.f.apply(self, [data]);
- } );
-
- var i = 0;
- this.series.forEach( function(series) {
- if (series.disabled) return;
- series.stack = stackedData[i++];
- } );
-
- this.stackedData = stackedData;
- return stackedData;
- };
-
- this.stackData.hooks = { data: [], after: [] };
-
- this._slice = function(d) {
-
- if (this.window.xMin || this.window.xMax) {
-
- var isInRange = true;
-
- if (this.window.xMin && d.x < this.window.xMin) isInRange = false;
- if (this.window.xMax && d.x > this.window.xMax) isInRange = false;
-
- return isInRange;
- }
-
- return true;
- };
-
- this.onUpdate = function(callback) {
- this.updateCallbacks.push(callback);
- };
-
- this.registerRenderer = function(renderer) {
- this._renderers = this._renderers || {};
- this._renderers[renderer.name] = renderer;
- };
-
- this.configure = function(args) {
-
- if (args.width || args.height) {
- this.setSize(args);
- }
-
- Rickshaw.keys(this.defaults).forEach( function(k) {
- this[k] = k in args ? args[k]
- : k in this ? this[k]
- : this.defaults[k];
- }, this );
-
- this.setRenderer(args.renderer || this.renderer.name, args);
- };
-
- this.setRenderer = function(name, args) {
-
- if (!this._renderers[name]) {
- throw "couldn't find renderer " + name;
- }
- this.renderer = this._renderers[name];
-
- if (typeof args == 'object') {
- this.renderer.configure(args);
- }
- };
-
- this.setSize = function(args) {
-
- args = args || {};
-
- if (typeof window !== undefined) {
- var style = window.getComputedStyle(this.element, null);
- var elementWidth = parseInt(style.getPropertyValue('width'));
- var elementHeight = parseInt(style.getPropertyValue('height'));
- }
-
- this.width = args.width || elementWidth || 400;
- this.height = args.height || elementHeight || 250;
-
- this.vis && this.vis
- .attr('width', this.width)
- .attr('height', this.height);
- }
-
- this.initialize(args);
-};
-Rickshaw.namespace('Rickshaw.Fixtures.Color');
-
-Rickshaw.Fixtures.Color = function() {
-
- this.schemes = {};
-
- this.schemes.spectrum14 = [
- '#ecb796',
- '#dc8f70',
- '#b2a470',
- '#92875a',
- '#716c49',
- '#d2ed82',
- '#bbe468',
- '#a1d05d',
- '#e7cbe6',
- '#d8aad6',
- '#a888c2',
- '#9dc2d3',
- '#649eb9',
- '#387aa3'
- ].reverse();
-
- this.schemes.spectrum2000 = [
- '#57306f',
- '#514c76',
- '#646583',
- '#738394',
- '#6b9c7d',
- '#84b665',
- '#a7ca50',
- '#bfe746',
- '#e2f528',
- '#fff726',
- '#ecdd00',
- '#d4b11d',
- '#de8800',
- '#de4800',
- '#c91515',
- '#9a0000',
- '#7b0429',
- '#580839',
- '#31082b'
- ];
-
- this.schemes.spectrum2001 = [
- '#2f243f',
- '#3c2c55',
- '#4a3768',
- '#565270',
- '#6b6b7c',
- '#72957f',
- '#86ad6e',
- '#a1bc5e',
- '#b8d954',
- '#d3e04e',
- '#ccad2a',
- '#cc8412',
- '#c1521d',
- '#ad3821',
- '#8a1010',
- '#681717',
- '#531e1e',
- '#3d1818',
- '#320a1b'
- ];
-
- this.schemes.classic9 = [
- '#423d4f',
- '#4a6860',
- '#848f39',
- '#a2b73c',
- '#ddcb53',
- '#c5a32f',
- '#7d5836',
- '#963b20',
- '#7c2626',
- '#491d37',
- '#2f254a'
- ].reverse();
-
- this.schemes.httpStatus = {
- 503: '#ea5029',
- 502: '#d23f14',
- 500: '#bf3613',
- 410: '#efacea',
- 409: '#e291dc',
- 403: '#f457e8',
- 408: '#e121d2',
- 401: '#b92dae',
- 405: '#f47ceb',
- 404: '#a82a9f',
- 400: '#b263c6',
- 301: '#6fa024',
- 302: '#87c32b',
- 307: '#a0d84c',
- 304: '#28b55c',
- 200: '#1a4f74',
- 206: '#27839f',
- 201: '#52adc9',
- 202: '#7c979f',
- 203: '#a5b8bd',
- 204: '#c1cdd1'
- };
-
- this.schemes.colorwheel = [
- '#b5b6a9',
- '#858772',
- '#785f43',
- '#96557e',
- '#4682b4',
- '#65b9ac',
- '#73c03a',
- '#cb513a'
- ].reverse();
-
- this.schemes.cool = [
- '#5e9d2f',
- '#73c03a',
- '#4682b4',
- '#7bc3b8',
- '#a9884e',
- '#c1b266',
- '#a47493',
- '#c09fb5'
- ];
-
- this.schemes.munin = [
- '#00cc00',
- '#0066b3',
- '#ff8000',
- '#ffcc00',
- '#330099',
- '#990099',
- '#ccff00',
- '#ff0000',
- '#808080',
- '#008f00',
- '#00487d',
- '#b35a00',
- '#b38f00',
- '#6b006b',
- '#8fb300',
- '#b30000',
- '#bebebe',
- '#80ff80',
- '#80c9ff',
- '#ffc080',
- '#ffe680',
- '#aa80ff',
- '#ee00cc',
- '#ff8080',
- '#666600',
- '#ffbfff',
- '#00ffcc',
- '#cc6699',
- '#999900'
- ];
-};
-Rickshaw.namespace('Rickshaw.Fixtures.RandomData');
-
-Rickshaw.Fixtures.RandomData = function(timeInterval) {
-
- var addData;
- timeInterval = timeInterval || 1;
-
- var lastRandomValue = 200;
-
- var timeBase = Math.floor(new Date().getTime() / 1000);
-
- this.addData = function(data) {
-
- var randomValue = Math.random() * 100 + 15 + lastRandomValue;
- var index = data[0].length;
-
- var counter = 1;
-
- data.forEach( function(series) {
- var randomVariance = Math.random() * 20;
- var v = randomValue / 25 + counter++
- + (Math.cos((index * counter * 11) / 960) + 2) * 15
- + (Math.cos(index / 7) + 2) * 7
- + (Math.cos(index / 17) + 2) * 1;
-
- series.push( { x: (index * timeInterval) + timeBase, y: v + randomVariance } );
- } );
-
- lastRandomValue = randomValue * .85;
- }
-};
-
-Rickshaw.namespace('Rickshaw.Fixtures.Time');
-
-Rickshaw.Fixtures.Time = function() {
-
- var tzOffset = new Date().getTimezoneOffset() * 60;
-
- var self = this;
-
- this.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
-
- this.units = [
- {
- name: 'decade',
- seconds: 86400 * 365.25 * 10,
- formatter: function(d) { return (parseInt(d.getUTCFullYear() / 10) * 10) }
- }, {
- name: '5 year',
- seconds: 86400 * 365.25 * 5,
- formatter: function(d) { return (parseInt(d.getUTCFullYear() / 5) * 5) }
- }, {
- name: 'year',
- seconds: 86400 * 365.25,
- formatter: function(d) { return d.getUTCFullYear() }
- }, {
- name: '6 month',
- seconds: 86400 * 30.5 * 6,
- formatter: function(d) { return self.months[d.getUTCMonth()] }
- }, {
- name: 'month',
- seconds: 86400 * 30.5,
- formatter: function(d) { return self.months[d.getUTCMonth()] }
- }, {
- name: 'week',
- seconds: 86400 * 7,
- formatter: function(d) { return self.formatDate(d) }
- }, {
- name: '3 day',
- seconds: 86400 * 3,
- formatter: function(d) { return self.formatDate(d) }
- }, {
- name: 'day',
- seconds: 86400,
- formatter: function(d) { return d.getUTCDate() }
- }, {
- name: '6 hour',
- seconds: 3600 * 6,
- formatter: function(d) { return self.formatTime(d) }
- }, {
- name: 'hour',
- seconds: 3600,
- formatter: function(d) { return self.formatTime(d) }
- }, {
- name: '15 minute',
- seconds: 60 * 15,
- formatter: function(d) { return self.formatTime(d) }
- }, {
- name: '5 minute',
- seconds: 60 * 5,
- formatter: function(d) { return self.formatTime(d) }
- }, {
- name: 'minute',
- seconds: 60,
- formatter: function(d) { return d.getUTCMinutes() }
- }, {
- name: '15 second',
- seconds: 15,
- formatter: function(d) { return d.getUTCSeconds() + 's' }
- }, {
- name: '5 second',
- seconds: 5,
- formatter: function(d) { return d.getUTCSeconds() + 's' }
- }, {
- name: 'second',
- seconds: 1,
- formatter: function(d) { return d.getUTCSeconds() + 's' }
- }
- ];
-
- this.unit = function(unitName) {
- return this.units.filter( function(unit) { return unitName == unit.name } ).shift();
- };
-
- this.formatDate = function(d) {
- return d.toUTCString().match(/, (\w+ \w+ \w+)/)[1];
- };
-
- this.formatTime = function(d) {
- return d.toUTCString().match(/(\d+:\d+):/)[1];
- };
-
- this.ceil = function(time, unit) {
-
- if (unit.name == 'month') {
-
- var nearFuture = new Date((time + unit.seconds - 1) * 1000);
-
- var rounded = new Date(0);
- rounded.setUTCFullYear(nearFuture.getUTCFullYear());
- rounded.setUTCMonth(nearFuture.getUTCMonth());
- rounded.setUTCDate(1);
- rounded.setUTCHours(0);
- rounded.setUTCMinutes(0);
- rounded.setUTCSeconds(0);
- rounded.setUTCMilliseconds(0);
-
- return rounded.getTime() / 1000;
- }
-
- if (unit.name == 'year') {
-
- var nearFuture = new Date((time + unit.seconds - 1) * 1000);
-
- var rounded = new Date(0);
- rounded.setUTCFullYear(nearFuture.getUTCFullYear());
- rounded.setUTCMonth(0);
- rounded.setUTCDate(1);
- rounded.setUTCHours(0);
- rounded.setUTCMinutes(0);
- rounded.setUTCSeconds(0);
- rounded.setUTCMilliseconds(0);
-
- return rounded.getTime() / 1000;
- }
-
- return Math.ceil(time / unit.seconds) * unit.seconds;
- };
-};
-Rickshaw.namespace('Rickshaw.Fixtures.Number');
-
-Rickshaw.Fixtures.Number.formatKMBT = function(y) {
- if (y >= 1000000000000) { return y / 1000000000000 + "T" }
- else if (y >= 1000000000) { return y / 1000000000 + "B" }
- else if (y >= 1000000) { return y / 1000000 + "M" }
- else if (y >= 1000) { return y / 1000 + "K" }
- else if (y < 1 && y > 0) { return y.toFixed(2) }
- else if (y == 0) { return '' }
- else { return y }
-};
-
-Rickshaw.Fixtures.Number.formatBase1024KMGTP = function(y) {
- if (y >= 1125899906842624) { return y / 1125899906842624 + "P" }
- else if (y >= 1099511627776){ return y / 1099511627776 + "T" }
- else if (y >= 1073741824) { return y / 1073741824 + "G" }
- else if (y >= 1048576) { return y / 1048576 + "M" }
- else if (y >= 1024) { return y / 1024 + "K" }
- else if (y < 1 && y > 0) { return y.toFixed(2) }
- else if (y == 0) { return '' }
- else { return y }
-};
-Rickshaw.namespace("Rickshaw.Color.Palette");
-
-Rickshaw.Color.Palette = function(args) {
-
- var color = new Rickshaw.Fixtures.Color();
-
- args = args || {};
- this.schemes = {};
-
- this.scheme = color.schemes[args.scheme] || args.scheme || color.schemes.colorwheel;
- this.runningIndex = 0;
- this.generatorIndex = 0;
-
- if (args.interpolatedStopCount) {
- var schemeCount = this.scheme.length - 1;
- var i, j, scheme = [];
- for (i = 0; i < schemeCount; i++) {
- scheme.push(this.scheme[i]);
- var generator = d3.interpolateHsl(this.scheme[i], this.scheme[i + 1]);
- for (j = 1; j < args.interpolatedStopCount; j++) {
- scheme.push(generator((1 / args.interpolatedStopCount) * j));
- }
- }
- scheme.push(this.scheme[this.scheme.length - 1]);
- this.scheme = scheme;
- }
- this.rotateCount = this.scheme.length;
-
- this.color = function(key) {
- return this.scheme[key] || this.scheme[this.runningIndex++] || this.interpolateColor() || '#808080';
- };
-
- this.interpolateColor = function() {
- if (!Array.isArray(this.scheme)) return;
- var color;
- if (this.generatorIndex == this.rotateCount * 2 - 1) {
- color = d3.interpolateHsl(this.scheme[this.generatorIndex], this.scheme[0])(0.5);
- this.generatorIndex = 0;
- this.rotateCount *= 2;
- } else {
- color = d3.interpolateHsl(this.scheme[this.generatorIndex], this.scheme[this.generatorIndex + 1])(0.5);
- this.generatorIndex++;
- }
- this.scheme.push(color);
- return color;
- };
-
-};
-Rickshaw.namespace('Rickshaw.Graph.Ajax');
-
-Rickshaw.Graph.Ajax = Rickshaw.Class.create( {
-
- initialize: function(args) {
-
- this.dataURL = args.dataURL;
-
- this.onData = args.onData || function(d) { return d };
- this.onComplete = args.onComplete || function() {};
- this.onError = args.onError || function() {};
-
- this.args = args; // pass through to Rickshaw.Graph
-
- this.request();
- },
-
- request: function() {
-
- $.ajax( {
- url: this.dataURL,
- dataType: 'json',
- success: this.success.bind(this),
- error: this.error.bind(this)
- } );
- },
-
- error: function() {
-
- console.log("error loading dataURL: " + this.dataURL);
- this.onError(this);
- },
-
- success: function(data, status) {
-
- data = this.onData(data);
- this.args.series = this._splice({ data: data, series: this.args.series });
-
- this.graph = new Rickshaw.Graph(this.args);
- this.graph.render();
-
- this.onComplete(this);
- },
-
- _splice: function(args) {
-
- var data = args.data;
- var series = args.series;
-
- if (!args.series) return data;
-
- series.forEach( function(s) {
-
- var seriesKey = s.key || s.name;
- if (!seriesKey) throw "series needs a key or a name";
-
- data.forEach( function(d) {
-
- var dataKey = d.key || d.name;
- if (!dataKey) throw "data needs a key or a name";
-
- if (seriesKey == dataKey) {
- var properties = ['color', 'name', 'data'];
- properties.forEach( function(p) {
- s[p] = s[p] || d[p];
- } );
- }
- } );
- } );
-
- return series;
- }
-} );
-
-Rickshaw.namespace('Rickshaw.Graph.Annotate');
-
-Rickshaw.Graph.Annotate = function(args) {
-
- var graph = this.graph = args.graph;
- this.elements = { timeline: args.element };
-
- var self = this;
-
- this.data = {};
-
- this.elements.timeline.classList.add('rickshaw_annotation_timeline');
-
- this.add = function(time, content, end_time) {
- self.data[time] = self.data[time] || {'boxes': []};
- self.data[time].boxes.push({content: content, end: end_time});
- };
-
- this.update = function() {
-
- Rickshaw.keys(self.data).forEach( function(time) {
-
- var annotation = self.data[time];
- var left = self.graph.x(time);
-
- if (left < 0 || left > self.graph.x.range()[1]) {
- if (annotation.element) {
- annotation.line.classList.add('offscreen');
- annotation.element.style.display = 'none';
- }
-
- annotation.boxes.forEach( function(box) {
- if ( box.rangeElement ) box.rangeElement.classList.add('offscreen');
- });
-
- return;
- }
-
- if (!annotation.element) {
- var element = annotation.element = document.createElement('div');
- element.classList.add('annotation');
- this.elements.timeline.appendChild(element);
- element.addEventListener('click', function(e) {
- element.classList.toggle('active');
- annotation.line.classList.toggle('active');
- annotation.boxes.forEach( function(box) {
- if ( box.rangeElement ) box.rangeElement.classList.toggle('active');
- });
- }, false);
-
- }
-
- annotation.element.style.left = left + 'px';
- annotation.element.style.display = 'block';
-
- annotation.boxes.forEach( function(box) {
-
-
- var element = box.element;
-
- if (!element) {
- element = box.element = document.createElement('div');
- element.classList.add('content');
- element.innerHTML = box.content;
- annotation.element.appendChild(element);
-
- annotation.line = document.createElement('div');
- annotation.line.classList.add('annotation_line');
- self.graph.element.appendChild(annotation.line);
-
- if ( box.end ) {
- box.rangeElement = document.createElement('div');
- box.rangeElement.classList.add('annotation_range');
- self.graph.element.appendChild(box.rangeElement);
- }
-
- }
-
- if ( box.end ) {
-
- var annotationRangeStart = left;
- var annotationRangeEnd = Math.min( self.graph.x(box.end), self.graph.x.range()[1] );
-
- // annotation makes more sense at end
- if ( annotationRangeStart > annotationRangeEnd ) {
- annotationRangeEnd = left;
- annotationRangeStart = Math.max( self.graph.x(box.end), self.graph.x.range()[0] );
- }
-
- var annotationRangeWidth = annotationRangeEnd - annotationRangeStart;
-
- box.rangeElement.style.left = annotationRangeStart + 'px';
- box.rangeElement.style.width = annotationRangeWidth + 'px'
-
- box.rangeElement.classList.remove('offscreen');
- }
-
- annotation.line.classList.remove('offscreen');
- annotation.line.style.left = left + 'px';
- } );
- }, this );
- };
-
- this.graph.onUpdate( function() { self.update() } );
-};
-Rickshaw.namespace('Rickshaw.Graph.Axis.Time');
-
-Rickshaw.Graph.Axis.Time = function(args) {
-
- var self = this;
-
- this.graph = args.graph;
- this.elements = [];
- this.ticksTreatment = args.ticksTreatment || 'plain';
- this.fixedTimeUnit = args.timeUnit;
-
- var time = new Rickshaw.Fixtures.Time();
-
- this.appropriateTimeUnit = function() {
-
- var unit;
- var units = time.units;
-
- var domain = this.graph.x.domain();
- var rangeSeconds = domain[1] - domain[0];
-
- units.forEach( function(u) {
- if (Math.floor(rangeSeconds / u.seconds) >= 2) {
- unit = unit || u;
- }
- } );
-
- return (unit || time.units[time.units.length - 1]);
- };
-
- this.tickOffsets = function() {
-
- var domain = this.graph.x.domain();
-
- var unit = this.fixedTimeUnit || this.appropriateTimeUnit();
- var count = Math.ceil((domain[1] - domain[0]) / unit.seconds);
-
- var runningTick = domain[0];
-
- var offsets = [];
-
- for (var i = 0; i < count; i++) {
-
- tickValue = time.ceil(runningTick, unit);
- runningTick = tickValue + unit.seconds / 2;
-
- offsets.push( { value: tickValue, unit: unit } );
- }
-
- return offsets;
- };
-
- this.render = function() {
-
- this.elements.forEach( function(e) {
- e.parentNode.removeChild(e);
- } );
-
- this.elements = [];
-
- var offsets = this.tickOffsets();
-
- offsets.forEach( function(o) {
-
- if (self.graph.x(o.value) > self.graph.x.range()[1]) return;
-
- var element = document.createElement('div');
- element.style.left = self.graph.x(o.value) + 'px';
- element.classList.add('x_tick');
- element.classList.add(self.ticksTreatment);
-
- var title = document.createElement('div');
- title.classList.add('title');
- title.innerHTML = o.unit.formatter(new Date(o.value * 1000));
- element.appendChild(title);
-
- self.graph.element.appendChild(element);
- self.elements.push(element);
-
- } );
- };
-
- this.graph.onUpdate( function() { self.render() } );
-};
-
-Rickshaw.namespace('Rickshaw.Graph.Axis.Y');
-
-Rickshaw.Graph.Axis.Y = function(args) {
-
- var self = this;
- var berthRate = 0.10;
-
- this.initialize = function(args) {
-
- this.graph = args.graph;
- this.orientation = args.orientation || 'right';
-
- var pixelsPerTick = args.pixelsPerTick || 75;
- this.ticks = args.ticks || Math.floor(this.graph.height / pixelsPerTick);
- this.tickSize = args.tickSize || 4;
- this.ticksTreatment = args.ticksTreatment || 'plain';
-
- if (args.element) {
-
- this.element = args.element;
- this.vis = d3.select(args.element)
- .append("svg:svg")
- .attr('class', 'rickshaw_graph y_axis');
-
- this.element = this.vis[0][0];
- this.element.style.position = 'relative';
-
- this.setSize({ width: args.width, height: args.height });
-
- } else {
- this.vis = this.graph.vis;
- }
-
- this.graph.onUpdate( function() { self.render() } );
- };
-
- this.setSize = function(args) {
-
- args = args || {};
-
- if (!this.element) return;
-
- if (typeof window !== 'undefined') {
-
- var style = window.getComputedStyle(this.element.parentNode, null);
- var elementWidth = parseInt(style.getPropertyValue('width'));
-
- if (!args.auto) {
- var elementHeight = parseInt(style.getPropertyValue('height'));
- }
- }
-
- this.width = args.width || elementWidth || this.graph.width * berthRate;
- this.height = args.height || elementHeight || this.graph.height;
-
- this.vis
- .attr('width', this.width)
- .attr('height', this.height * (1 + berthRate));
-
- var berth = this.height * berthRate;
- this.element.style.top = -1 * berth + 'px';
- };
-
- this.render = function() {
-
- if (this.graph.height !== this._renderHeight) this.setSize({ auto: true });
-
- var axis = d3.svg.axis().scale(this.graph.y).orient(this.orientation);
- axis.tickFormat( args.tickFormat || function(y) { return y } );
-
- if (this.orientation == 'left') {
- var berth = this.height * berthRate;
- var transform = 'translate(' + this.width + ', ' + berth + ')';
- }
-
- if (this.element) {
- this.vis.selectAll('*').remove();
- }
-
- this.vis
- .append("svg:g")
- .attr("class", ["y_ticks", this.ticksTreatment].join(" "))
- .attr("transform", transform)
- .call(axis.ticks(this.ticks).tickSubdivide(0).tickSize(this.tickSize))
-
- var gridSize = (this.orientation == 'right' ? 1 : -1) * this.graph.width;
-
- this.graph.vis
- .append("svg:g")
- .attr("class", "y_grid")
- .call(axis.ticks(this.ticks).tickSubdivide(0).tickSize(gridSize));
-
- this._renderHeight = this.graph.height;
- };
-
- this.initialize(args);
-};
-
-Rickshaw.namespace('Rickshaw.Graph.Behavior.Series.Highlight');
-
-Rickshaw.Graph.Behavior.Series.Highlight = function(args) {
-
- this.graph = args.graph;
- this.legend = args.legend;
-
- var self = this;
-
- var colorSafe = {};
-
- this.addHighlightEvents = function (l) {
- l.element.addEventListener( 'mouseover', function(e) {
-
- self.legend.lines.forEach( function(line) {
- if (l === line) return;
- colorSafe[line.series.name] = colorSafe[line.series.name] || line.series.color;
- line.series.color = d3.interpolateRgb(line.series.color, d3.rgb('#d8d8d8'))(0.8).toString();
- } );
-
- self.graph.update();
-
- }, false );
-
- l.element.addEventListener( 'mouseout', function(e) {
-
- self.legend.lines.forEach( function(line) {
- if (colorSafe[line.series.name]) {
- line.series.color = colorSafe[line.series.name];
- }
- } );
-
- self.graph.update();
-
- }, false );
- };
-
- if (this.legend) {
- this.legend.lines.forEach( function(l) {
- self.addHighlightEvents(l);
- } );
- }
-
-};
-Rickshaw.namespace('Rickshaw.Graph.Behavior.Series.Order');
-
-Rickshaw.Graph.Behavior.Series.Order = function(args) {
-
- this.graph = args.graph;
- this.legend = args.legend;
-
- var self = this;
-
- $(function() {
- $(self.legend.list).sortable( {
- containment: 'parent',
- tolerance: 'pointer',
- update: function( event, ui ) {
- var series = [];
- $(self.legend.list).find('li').each( function(index, item) {
- if (!item.series) return;
- series.push(item.series);
- } );
-
- for (var i = self.graph.series.length - 1; i >= 0; i--) {
- self.graph.series[i] = series.shift();
- }
-
- self.graph.update();
- }
- } );
- $(self.legend.list).disableSelection();
- });
-
- //hack to make jquery-ui sortable behave
- this.graph.onUpdate( function() {
- // commenting out since this breaks rendering in IE9
- //var h = window.getComputedStyle(self.legend.element).height;
- //self.legend.element.style.height = h;
- } );
-};
-Rickshaw.namespace('Rickshaw.Graph.Behavior.Series.Toggle');
-
-Rickshaw.Graph.Behavior.Series.Toggle = function(args) {
-
- this.graph = args.graph;
- this.legend = args.legend;
-
- var self = this;
-
- this.addAnchor = function(line) {
- var anchor = document.createElement('a');
- anchor.innerHTML = '✔';
- anchor.classList.add('action');
- line.element.insertBefore(anchor, line.element.firstChild);
-
- anchor.onclick = function(e) {
- if (line.series.disabled) {
- line.series.enable();
- line.element.classList.remove('disabled');
- } else {
- line.series.disable();
- line.element.classList.add('disabled');
- }
- }
-
- var label = line.element.getElementsByTagName('span')[0];
- label.onclick = function(e){
-
- var disableAllOtherLines = line.series.disabled;
- if ( ! disableAllOtherLines ) {
- for ( var i = 0; i < self.legend.lines.length; i++ ) {
- var l = self.legend.lines[i];
- if ( line.series === l.series ) {
- // noop
- } else if ( l.series.disabled ) {
- // noop
- } else {
- disableAllOtherLines = true;
- break;
- }
- }
- }
-
- // show all or none
- if ( disableAllOtherLines ) {
-
- // these must happen first or else we try ( and probably fail ) to make a no line graph
- line.series.enable();
- line.element.classList.remove('disabled');
-
- self.legend.lines.forEach(function(l){
- if ( line.series === l.series ) {
- // noop
- } else {
- l.series.disable();
- l.element.classList.add('disabled');
- }
- });
-
- } else {
-
- self.legend.lines.forEach(function(l){
- l.series.enable();
- l.element.classList.remove('disabled');
- });
-
- }
-
- };
-
- };
-
- if (this.legend) {
-
- $(this.legend.list).sortable( {
- start: function(event, ui) {
- ui.item.bind('no.onclick',
- function(event) {
- event.preventDefault();
- }
- );
- },
- stop: function(event, ui) {
- setTimeout(function(){
- ui.item.unbind('no.onclick');
- }, 250);
- }
- })
-
- this.legend.lines.forEach( function(l) {
- self.addAnchor(l);
- } );
- }
-
- this._addBehavior = function() {
-
- this.graph.series.forEach( function(s) {
-
- s.disable = function() {
-
- if (self.graph.series.length <= 1) {
- throw('only one series left');
- }
-
- s.disabled = true;
- self.graph.update();
- };
-
- s.enable = function() {
- s.disabled = false;
- self.graph.update();
- };
- } );
- };
- this._addBehavior();
-
- this.updateBehaviour = function () { this._addBehavior() };
-
-};
-Rickshaw.namespace('Rickshaw.Graph.HoverDetail');
-
-Rickshaw.Graph.HoverDetail = Rickshaw.Class.create({
-
- initialize: function(args) {
-
- var graph = this.graph = args.graph;
-
- this.xFormatter = args.xFormatter || function(x) {
- return new Date( x * 1000 ).toUTCString();
- };
-
- this.yFormatter = args.yFormatter || function(y) {
- return y.toFixed(2);
- };
-
- var element = this.element = document.createElement('div');
- element.className = 'detail';
-
- this.visible = true;
- graph.element.appendChild(element);
-
- this.lastEvent = null;
- this._addListeners();
-
- this.onShow = args.onShow;
- this.onHide = args.onHide;
- this.onRender = args.onRender;
-
- this.formatter = args.formatter || this.formatter;
- },
-
- formatter: function(series, x, y, formattedX, formattedY, d) {
- return series.name + ': ' + formattedY;
- },
-
- update: function(e) {
-
- e = e || this.lastEvent;
- if (!e) return;
- this.lastEvent = e;
-
- if (!e.target.nodeName.match(/^(path|svg|rect)$/)) return;
-
- var graph = this.graph;
-
- var eventX = e.offsetX || e.layerX;
- var eventY = e.offsetY || e.layerY;
-
- var domainX = graph.x.invert(eventX);
- var stackedData = graph.stackedData;
-
- var topSeriesData = stackedData.slice(-1).shift();
-
- var domainIndexScale = d3.scale.linear()
- .domain([topSeriesData[0].x, topSeriesData.slice(-1).shift().x])
- .range([0, topSeriesData.length]);
-
- var approximateIndex = Math.floor(domainIndexScale(domainX));
- var dataIndex = Math.min(approximateIndex || 0, stackedData[0].length - 1);
-
- for (var i = approximateIndex; i < stackedData[0].length - 1;) {
-
- if (!stackedData[0][i] || !stackedData[0][i + 1]) {
- break;
- }
-
- if (stackedData[0][i].x <= domainX && stackedData[0][i + 1].x > domainX) {
- dataIndex = i;
- break;
- }
- if (stackedData[0][i + 1] <= domainX) { i++ } else { i-- }
- }
-
- var domainX = stackedData[0][dataIndex].x;
- var formattedXValue = this.xFormatter(domainX);
- var graphX = graph.x(domainX);
- var order = 0;
-
- var detail = graph.series.active()
- .map( function(s) { return { order: order++, series: s, name: s.name, value: s.stack[dataIndex] } } );
-
- var activeItem;
-
- var sortFn = function(a, b) {
- return (a.value.y0 + a.value.y) - (b.value.y0 + b.value.y);
- };
-
- var domainMouseY = graph.y.magnitude.invert(graph.element.offsetHeight - eventY);
-
- detail.sort(sortFn).forEach( function(d) {
-
- d.formattedYValue = (this.yFormatter.constructor == Array) ?
- this.yFormatter[detail.indexOf(d)](d.value.y) :
- this.yFormatter(d.value.y);
-
- d.graphX = graphX;
- d.graphY = graph.y(d.value.y0 + d.value.y);
-
- if (domainMouseY > d.value.y0 && domainMouseY < d.value.y0 + d.value.y && !activeItem) {
- activeItem = d;
- d.active = true;
- }
-
- }, this );
-
- this.element.innerHTML = '';
- this.element.style.left = graph.x(domainX) + 'px';
-
- if (this.visible) {
- this.render( {
- detail: detail,
- domainX: domainX,
- formattedXValue: formattedXValue,
- mouseX: eventX,
- mouseY: eventY
- } );
- }
- },
-
- hide: function() {
- this.visible = false;
- this.element.classList.add('inactive');
-
- if (typeof this.onHide == 'function') {
- this.onHide();
- }
- },
-
- show: function() {
- this.visible = true;
- this.element.classList.remove('inactive');
-
- if (typeof this.onShow == 'function') {
- this.onShow();
- }
- },
-
- render: function(args) {
-
- var detail = args.detail;
- var domainX = args.domainX;
-
- var mouseX = args.mouseX;
- var mouseY = args.mouseY;
-
- var formattedXValue = args.formattedXValue;
-
- var xLabel = document.createElement('div');
- xLabel.className = 'x_label';
- xLabel.innerHTML = formattedXValue;
- this.element.appendChild(xLabel);
-
- detail.forEach( function(d) {
-
- var item = document.createElement('div');
- item.className = 'item';
- item.innerHTML = this.formatter(d.series, domainX, d.value.y, formattedXValue, d.formattedYValue, d);
- item.style.top = this.graph.y(d.value.y0 + d.value.y) + 'px';
-
- this.element.appendChild(item);
-
- var dot = document.createElement('div');
- dot.className = 'dot';
- dot.style.top = item.style.top;
- dot.style.borderColor = d.series.color;
-
- this.element.appendChild(dot);
-
- if (d.active) {
- item.className = 'item active';
- dot.className = 'dot active';
- }
-
- }, this );
-
- this.show();
-
- if (typeof this.onRender == 'function') {
- this.onRender(args);
- }
- },
-
- _addListeners: function() {
-
- this.graph.element.addEventListener(
- 'mousemove',
- function(e) {
- this.visible = true;
- this.update(e)
- }.bind(this),
- false
- );
-
- this.graph.onUpdate( function() { this.update() }.bind(this) );
-
- this.graph.element.addEventListener(
- 'mouseout',
- function(e) {
- if (e.relatedTarget && !(e.relatedTarget.compareDocumentPosition(this.graph.element) & Node.DOCUMENT_POSITION_CONTAINS)) {
- this.hide();
- }
- }.bind(this),
- false
- );
- }
-});
-
-Rickshaw.namespace('Rickshaw.Graph.JSONP');
-
-Rickshaw.Graph.JSONP = Rickshaw.Class.create( Rickshaw.Graph.Ajax, {
-
- request: function() {
-
- $.ajax( {
- url: this.dataURL,
- dataType: 'jsonp',
- success: this.success.bind(this),
- error: this.error.bind(this)
- } );
- }
-} );
-Rickshaw.namespace('Rickshaw.Graph.Legend');
-
-Rickshaw.Graph.Legend = function(args) {
-
- var element = this.element = args.element;
- var graph = this.graph = args.graph;
-
- var self = this;
-
- element.classList.add('rickshaw_legend');
-
- var list = this.list = document.createElement('ul');
- element.appendChild(list);
-
- var series = graph.series
- .map( function(s) { return s } )
- .reverse();
-
- this.lines = [];
-
- this.addLine = function (series) {
- var line = document.createElement('li');
- line.className = 'line';
-
- var swatch = document.createElement('div');
- swatch.className = 'swatch';
- swatch.style.backgroundColor = series.color;
-
- line.appendChild(swatch);
-
- var label = document.createElement('span');
- label.className = 'label';
- label.innerHTML = series.name;
-
- line.appendChild(label);
- list.appendChild(line);
-
- line.series = series;
-
- if (series.noLegend) {
- line.style.display = 'none';
- }
-
- var _line = { element: line, series: series };
- if (self.shelving) {
- self.shelving.addAnchor(_line);
- self.shelving.updateBehaviour();
- }
- if (self.highlighter) {
- self.highlighter.addHighlightEvents(_line);
- }
- self.lines.push(_line);
- };
-
- series.forEach( function(s) {
- self.addLine(s);
- } );
-
- graph.onUpdate( function() {} );
-};
-Rickshaw.namespace('Rickshaw.Graph.RangeSlider');
-
-Rickshaw.Graph.RangeSlider = function(args) {
-
- var element = this.element = args.element;
- var graph = this.graph = args.graph;
-
- $( function() {
- $(element).slider( {
-
- range: true,
- min: graph.dataDomain()[0],
- max: graph.dataDomain()[1],
- values: [
- graph.dataDomain()[0],
- graph.dataDomain()[1]
- ],
- slide: function( event, ui ) {
-
- graph.window.xMin = ui.values[0];
- graph.window.xMax = ui.values[1];
- graph.update();
-
- // if we're at an extreme, stick there
- if (graph.dataDomain()[0] == ui.values[0]) {
- graph.window.xMin = undefined;
- }
- if (graph.dataDomain()[1] == ui.values[1]) {
- graph.window.xMax = undefined;
- }
- }
- } );
- } );
-
- element[0].style.width = graph.width + 'px';
-
- graph.onUpdate( function() {
-
- var values = $(element).slider('option', 'values');
-
- $(element).slider('option', 'min', graph.dataDomain()[0]);
- $(element).slider('option', 'max', graph.dataDomain()[1]);
-
- if (graph.window.xMin == undefined) {
- values[0] = graph.dataDomain()[0];
- }
- if (graph.window.xMax == undefined) {
- values[1] = graph.dataDomain()[1];
- }
-
- $(element).slider('option', 'values', values);
-
- } );
-};
-
-Rickshaw.namespace("Rickshaw.Graph.Renderer");
-
-Rickshaw.Graph.Renderer = Rickshaw.Class.create( {
-
- initialize: function(args) {
- this.graph = args.graph;
- this.tension = args.tension || this.tension;
- this.graph.unstacker = this.graph.unstacker || new Rickshaw.Graph.Unstacker( { graph: this.graph } );
- this.configure(args);
- },
-
- seriesPathFactory: function() {
- //implement in subclass
- },
-
- seriesStrokeFactory: function() {
- // implement in subclass
- },
-
- defaults: function() {
- return {
- tension: 0.8,
- strokeWidth: 2,
- unstack: true,
- padding: { top: 0.01, right: 0, bottom: 0.01, left: 0 },
- stroke: false,
- fill: false
- };
- },
-
- domain: function() {
-
- var values = [];
- var stackedData = this.graph.stackedData || this.graph.stackData();
-
- var topSeriesData = this.unstack ? stackedData : [ stackedData.slice(-1).shift() ];
-
- topSeriesData.forEach( function(series) {
- series.forEach( function(d) {
- values.push( d.y + d.y0 );
- } );
- } );
-
- var xMin = stackedData[0][0].x;
- var xMax = stackedData[0][ stackedData[0].length - 1 ].x;
-
- xMin -= (xMax - xMin) * this.padding.left;
- xMax += (xMax - xMin) * this.padding.right;
-
- var yMin = this.graph.min === 'auto' ? d3.min( values ) : this.graph.min || 0;
- var yMax = this.graph.max || d3.max( values );
-
- if (this.graph.min === 'auto' || yMin < 0) {
- yMin -= (yMax - yMin) * this.padding.bottom;
- }
-
- if (this.graph.max === undefined) {
- yMax += (yMax - yMin) * this.padding.top;
- }
-
- return { x: [xMin, xMax], y: [yMin, yMax] };
- },
-
- render: function() {
-
- var graph = this.graph;
-
- graph.vis.selectAll('*').remove();
-
- var nodes = graph.vis.selectAll("path")
- .data(this.graph.stackedData)
- .enter().append("svg:path")
- .attr("d", this.seriesPathFactory());
-
- var i = 0;
- graph.series.forEach( function(series) {
- if (series.disabled) return;
- series.path = nodes[0][i++];
- this._styleSeries(series);
- }, this );
- },
-
- _styleSeries: function(series) {
-
- var fill = this.fill ? series.color : 'none';
- var stroke = this.stroke ? series.color : 'none';
-
- series.path.setAttribute('fill', fill);
- series.path.setAttribute('stroke', stroke);
- series.path.setAttribute('stroke-width', this.strokeWidth);
- series.path.setAttribute('class', series.className);
- },
-
- configure: function(args) {
-
- args = args || {};
-
- Rickshaw.keys(this.defaults()).forEach( function(key) {
-
- if (!args.hasOwnProperty(key)) {
- this[key] = this[key] || this.graph[key] || this.defaults()[key];
- return;
- }
-
- if (typeof this.defaults()[key] == 'object') {
-
- Rickshaw.keys(this.defaults()[key]).forEach( function(k) {
-
- this[key][k] =
- args[key][k] !== undefined ? args[key][k] :
- this[key][k] !== undefined ? this[key][k] :
- this.defaults()[key][k];
- }, this );
-
- } else {
- this[key] =
- args[key] !== undefined ? args[key] :
- this[key] !== undefined ? this[key] :
- this.graph[key] !== undefined ? this.graph[key] :
- this.defaults()[key];
- }
-
- }, this );
- },
-
- setStrokeWidth: function(strokeWidth) {
- if (strokeWidth !== undefined) {
- this.strokeWidth = strokeWidth;
- }
- },
-
- setTension: function(tension) {
- if (tension !== undefined) {
- this.tension = tension;
- }
- }
-} );
-
-Rickshaw.namespace('Rickshaw.Graph.Renderer.Line');
-
-Rickshaw.Graph.Renderer.Line = Rickshaw.Class.create( Rickshaw.Graph.Renderer, {
-
- name: 'line',
-
- defaults: function($super) {
-
- return Rickshaw.extend( $super(), {
- unstack: true,
- fill: false,
- stroke: true
- } );
- },
-
- seriesPathFactory: function() {
-
- var graph = this.graph;
-
- return d3.svg.line()
- .x( function(d) { return graph.x(d.x) } )
- .y( function(d) { return graph.y(d.y) } )
- .interpolate(this.graph.interpolation).tension(this.tension);
- }
-} );
-
-Rickshaw.namespace('Rickshaw.Graph.Renderer.Stack');
-
-Rickshaw.Graph.Renderer.Stack = Rickshaw.Class.create( Rickshaw.Graph.Renderer, {
-
- name: 'stack',
-
- defaults: function($super) {
-
- return Rickshaw.extend( $super(), {
- fill: true,
- stroke: false,
- unstack: false
- } );
- },
-
- seriesPathFactory: function() {
-
- var graph = this.graph;
-
- return d3.svg.area()
- .x( function(d) { return graph.x(d.x) } )
- .y0( function(d) { return graph.y(d.y0) } )
- .y1( function(d) { return graph.y(d.y + d.y0) } )
- .interpolate(this.graph.interpolation).tension(this.tension);
- }
-} );
-
-Rickshaw.namespace('Rickshaw.Graph.Renderer.Bar');
-
-Rickshaw.Graph.Renderer.Bar = Rickshaw.Class.create( Rickshaw.Graph.Renderer, {
-
- name: 'bar',
-
- defaults: function($super) {
-
- var defaults = Rickshaw.extend( $super(), {
- gapSize: 0.05,
- unstack: false
- } );
-
- delete defaults.tension;
- return defaults;
- },
-
- initialize: function($super, args) {
- args = args || {};
- this.gapSize = args.gapSize || this.gapSize;
- $super(args);
- },
-
- domain: function($super) {
-
- var domain = $super();
-
- var frequentInterval = this._frequentInterval();
- domain.x[1] += parseInt(frequentInterval.magnitude);
-
- return domain;
- },
-
- barWidth: function() {
-
- var stackedData = this.graph.stackedData || this.graph.stackData();
- var data = stackedData.slice(-1).shift();
-
- var frequentInterval = this._frequentInterval();
- var barWidth = this.graph.x(data[0].x + frequentInterval.magnitude * (1 - this.gapSize));
-
- return barWidth;
- },
-
- render: function() {
-
- var graph = this.graph;
-
- graph.vis.selectAll('*').remove();
-
- var barWidth = this.barWidth();
- var barXOffset = 0;
-
- var activeSeriesCount = graph.series.filter( function(s) { return !s.disabled; } ).length;
- var seriesBarWidth = this.unstack ? barWidth / activeSeriesCount : barWidth;
-
- var transform = function(d) {
- // add a matrix transform for negative values
- var matrix = [ 1, 0, 0, (d.y < 0 ? -1 : 1), 0, (d.y < 0 ? graph.y.magnitude(Math.abs(d.y)) * 2 : 0) ];
- return "matrix(" + matrix.join(',') + ")";
- };
-
- graph.series.forEach( function(series) {
-
- if (series.disabled) return;
-
- var nodes = graph.vis.selectAll("path")
- .data(series.stack)
- .enter().append("svg:rect")
- .attr("x", function(d) { return graph.x(d.x) + barXOffset })
- .attr("y", function(d) { return (graph.y(d.y0 + Math.abs(d.y))) * (d.y < 0 ? -1 : 1 ) })
- .attr("width", seriesBarWidth)
- .attr("height", function(d) { return graph.y.magnitude(Math.abs(d.y)) })
- .attr("transform", transform);
-
- Array.prototype.forEach.call(nodes[0], function(n) {
- n.setAttribute('fill', series.color);
- } );
-
- if (this.unstack) barXOffset += seriesBarWidth;
-
- }, this );
- },
-
- _frequentInterval: function() {
-
- var stackedData = this.graph.stackedData || this.graph.stackData();
- var data = stackedData.slice(-1).shift();
-
- var intervalCounts = {};
-
- for (var i = 0; i < data.length - 1; i++) {
- var interval = data[i + 1].x - data[i].x;
- intervalCounts[interval] = intervalCounts[interval] || 0;
- intervalCounts[interval]++;
- }
-
- var frequentInterval = { count: 0 };
-
- Rickshaw.keys(intervalCounts).forEach( function(i) {
- if (frequentInterval.count < intervalCounts[i]) {
-
- frequentInterval = {
- count: intervalCounts[i],
- magnitude: i
- };
- }
- } );
-
- this._frequentInterval = function() { return frequentInterval };
-
- return frequentInterval;
- }
-} );
-
-Rickshaw.namespace('Rickshaw.Graph.Renderer.Area');
-
-Rickshaw.Graph.Renderer.Area = Rickshaw.Class.create( Rickshaw.Graph.Renderer, {
-
- name: 'area',
-
- defaults: function($super) {
-
- return Rickshaw.extend( $super(), {
- unstack: false,
- fill: false,
- stroke: false
- } );
- },
-
- seriesPathFactory: function() {
-
- var graph = this.graph;
-
- return d3.svg.area()
- .x( function(d) { return graph.x(d.x) } )
- .y0( function(d) { return graph.y(d.y0) } )
- .y1( function(d) { return graph.y(d.y + d.y0) } )
- .interpolate(graph.interpolation).tension(this.tension);
- },
-
- seriesStrokeFactory: function() {
-
- var graph = this.graph;
-
- return d3.svg.line()
- .x( function(d) { return graph.x(d.x) } )
- .y( function(d) { return graph.y(d.y + d.y0) } )
- .interpolate(graph.interpolation).tension(this.tension);
- },
-
- render: function() {
-
- var graph = this.graph;
-
- graph.vis.selectAll('*').remove();
-
- var nodes = graph.vis.selectAll("path")
- .data(this.graph.stackedData)
- .enter().insert("svg:g", 'g');
-
- nodes.append("svg:path")
- .attr("d", this.seriesPathFactory())
- .attr("class", 'area');
-
- if (this.stroke) {
- nodes.append("svg:path")
- .attr("d", this.seriesStrokeFactory())
- .attr("class", 'line');
- }
-
- var i = 0;
- graph.series.forEach( function(series) {
- if (series.disabled) return;
- series.path = nodes[0][i++];
- this._styleSeries(series);
- }, this );
- },
-
- _styleSeries: function(series) {
-
- if (!series.path) return;
-
- d3.select(series.path).select('.area')
- .attr('fill', series.color);
-
- if (this.stroke) {
- d3.select(series.path).select('.line')
- .attr('fill', 'none')
- .attr('stroke', series.stroke || d3.interpolateRgb(series.color, 'black')(0.125))
- .attr('stroke-width', this.strokeWidth);
- }
-
- if (series.className) {
- series.path.setAttribute('class', series.className);
- }
- }
-} );
-
-Rickshaw.namespace('Rickshaw.Graph.Renderer.ScatterPlot');
-
-Rickshaw.Graph.Renderer.ScatterPlot = Rickshaw.Class.create( Rickshaw.Graph.Renderer, {
-
- name: 'scatterplot',
-
- defaults: function($super) {
-
- return Rickshaw.extend( $super(), {
- unstack: true,
- fill: true,
- stroke: false,
- padding:{ top: 0.01, right: 0.01, bottom: 0.01, left: 0.01 },
- dotSize: 4
- } );
- },
-
- initialize: function($super, args) {
- $super(args);
- },
-
- render: function() {
-
- var graph = this.graph;
-
- graph.vis.selectAll('*').remove();
-
- graph.series.forEach( function(series) {
-
- if (series.disabled) return;
-
- var nodes = graph.vis.selectAll("path")
- .data(series.stack)
- .enter().append("svg:circle")
- .attr("cx", function(d) { return graph.x(d.x) })
- .attr("cy", function(d) { return graph.y(d.y) })
- .attr("r", function(d) { return ("r" in d) ? d.r : graph.renderer.dotSize});
-
- Array.prototype.forEach.call(nodes[0], function(n) {
- n.setAttribute('fill', series.color);
- } );
-
- }, this );
- }
-} );
-Rickshaw.namespace('Rickshaw.Graph.Smoother');
-
-Rickshaw.Graph.Smoother = function(args) {
-
- this.graph = args.graph;
- this.element = args.element;
-
- var self = this;
-
- this.aggregationScale = 1;
-
- if (this.element) {
-
- $( function() {
- $(self.element).slider( {
- min: 1,
- max: 100,
- slide: function( event, ui ) {
- self.setScale(ui.value);
- self.graph.update();
- }
- } );
- } );
- }
-
- self.graph.stackData.hooks.data.push( {
- name: 'smoother',
- orderPosition: 50,
- f: function(data) {
-
- var aggregatedData = [];
-
- data.forEach( function(seriesData) {
-
- var aggregatedSeriesData = [];
-
- while (seriesData.length) {
-
- var avgX = 0, avgY = 0;
- var slice = seriesData.splice(0, self.aggregationScale);
-
- slice.forEach( function(d) {
- avgX += d.x / slice.length;
- avgY += d.y / slice.length;
- } );
-
- aggregatedSeriesData.push( { x: avgX, y: avgY } );
- }
-
- aggregatedData.push(aggregatedSeriesData);
- } );
-
- return aggregatedData;
- }
- } );
-
- this.setScale = function(scale) {
-
- if (scale < 1) {
- throw "scale out of range: " + scale;
- }
-
- this.aggregationScale = scale;
- this.graph.update();
- }
-};
-
-Rickshaw.namespace('Rickshaw.Graph.Unstacker');
-
-Rickshaw.Graph.Unstacker = function(args) {
-
- this.graph = args.graph;
- var self = this;
-
- this.graph.stackData.hooks.after.push( {
- name: 'unstacker',
- f: function(data) {
-
- if (!self.graph.renderer.unstack) return data;
-
- data.forEach( function(seriesData) {
- seriesData.forEach( function(d) {
- d.y0 = 0;
- } );
- } );
-
- return data;
- }
- } );
-};
-
-Rickshaw.namespace('Rickshaw.Series');
-
-Rickshaw.Series = Rickshaw.Class.create( Array, {
-
- initialize: function (data, palette, options) {
-
- options = options || {}
-
- this.palette = new Rickshaw.Color.Palette(palette);
-
- this.timeBase = typeof(options.timeBase) === 'undefined' ?
- Math.floor(new Date().getTime() / 1000) :
- options.timeBase;
-
- var timeInterval = typeof(options.timeInterval) == 'undefined' ?
- 1000 :
- options.timeInterval;
-
- this.setTimeInterval(timeInterval);
-
- if (data && (typeof(data) == "object") && (data instanceof Array)) {
- data.forEach( function(item) { this.addItem(item) }, this );
- }
- },
-
- addItem: function(item) {
-
- if (typeof(item.name) === 'undefined') {
- throw('addItem() needs a name');
- }
-
- item.color = (item.color || this.palette.color(item.name));
- item.data = (item.data || []);
-
- // backfill, if necessary
- if ((item.data.length == 0) && this.length && (this.getIndex() > 0)) {
- this[0].data.forEach( function(plot) {
- item.data.push({ x: plot.x, y: 0 });
- } );
- } else if (item.data.length == 0) {
- item.data.push({ x: this.timeBase - (this.timeInterval || 0), y: 0 });
- }
-
- this.push(item);
-
- if (this.legend) {
- this.legend.addLine(this.itemByName(item.name));
- }
- },
-
- addData: function(data) {
-
- var index = this.getIndex();
-
- Rickshaw.keys(data).forEach( function(name) {
- if (! this.itemByName(name)) {
- this.addItem({ name: name });
- }
- }, this );
-
- this.forEach( function(item) {
- item.data.push({
- x: (index * this.timeInterval || 1) + this.timeBase,
- y: (data[item.name] || 0)
- });
- }, this );
- },
-
- getIndex: function () {
- return (this[0] && this[0].data && this[0].data.length) ? this[0].data.length : 0;
- },
-
- itemByName: function(name) {
-
- for (var i = 0; i < this.length; i++) {
- if (this[i].name == name)
- return this[i];
- }
- },
-
- setTimeInterval: function(iv) {
- this.timeInterval = iv / 1000;
- },
-
- setTimeBase: function (t) {
- this.timeBase = t;
- },
-
- dump: function() {
-
- var data = {
- timeBase: this.timeBase,
- timeInterval: this.timeInterval,
- items: []
- };
-
- this.forEach( function(item) {
-
- var newItem = {
- color: item.color,
- name: item.name,
- data: []
- };
-
- item.data.forEach( function(plot) {
- newItem.data.push({ x: plot.x, y: plot.y });
- } );
-
- data.items.push(newItem);
- } );
-
- return data;
- },
-
- load: function(data) {
-
- if (data.timeInterval) {
- this.timeInterval = data.timeInterval;
- }
-
- if (data.timeBase) {
- this.timeBase = data.timeBase;
- }
-
- if (data.items) {
- data.items.forEach( function(item) {
- this.push(item);
- if (this.legend) {
- this.legend.addLine(this.itemByName(item.name));
- }
-
- }, this );
- }
- }
-} );
-
-Rickshaw.Series.zeroFill = function(series) {
-
- var x;
- var i = 0;
-
- var data = series.map( function(s) { return s.data } );
-
- while ( i < Math.max.apply(null, data.map( function(d) { return d.length } )) ) {
-
- x = Math.min.apply( null,
- data
- .filter(function(d) { return d[i] })
- .map(function(d) { return d[i].x })
- );
-
- data.forEach( function(d) {
- if (!d[i] || d[i].x != x) {
- d.splice(i, 0, { x: x, y: 0 });
- }
- } );
-
- i++;
- }
-};
-Rickshaw.namespace('Rickshaw.Series.FixedDuration');
-
-Rickshaw.Series.FixedDuration = Rickshaw.Class.create(Rickshaw.Series, {
-
- initialize: function (data, palette, options) {
-
- var options = options || {}
-
- if (typeof(options.timeInterval) === 'undefined') {
- throw new Error('FixedDuration series requires timeInterval');
- }
-
- if (typeof(options.maxDataPoints) === 'undefined') {
- throw new Error('FixedDuration series requires maxDataPoints');
- }
-
- this.palette = new Rickshaw.Color.Palette(palette);
- this.timeBase = typeof(options.timeBase) === 'undefined' ? Math.floor(new Date().getTime() / 1000) : options.timeBase;
- this.setTimeInterval(options.timeInterval);
-
- if (this[0] && this[0].data && this[0].data.length) {
- this.currentSize = this[0].data.length;
- this.currentIndex = this[0].data.length;
- } else {
- this.currentSize = 0;
- this.currentIndex = 0;
- }
-
- this.maxDataPoints = options.maxDataPoints;
-
-
- if (data && (typeof(data) == "object") && (data instanceof Array)) {
- data.forEach( function (item) { this.addItem(item) }, this );
- this.currentSize += 1;
- this.currentIndex += 1;
- }
-
- // reset timeBase for zero-filled values if needed
- this.timeBase -= (this.maxDataPoints - this.currentSize) * this.timeInterval;
-
- // zero-fill up to maxDataPoints size if we don't have that much data yet
- if ((typeof(this.maxDataPoints) !== 'undefined') && (this.currentSize < this.maxDataPoints)) {
- for (var i = this.maxDataPoints - this.currentSize - 1; i > 0; i--) {
- this.currentSize += 1;
- this.currentIndex += 1;
- this.forEach( function (item) {
- item.data.unshift({ x: ((i-1) * this.timeInterval || 1) + this.timeBase, y: 0, i: i });
- }, this );
- }
- }
- },
-
- addData: function($super, data) {
-
- $super(data)
-
- this.currentSize += 1;
- this.currentIndex += 1;
-
- if (this.maxDataPoints !== undefined) {
- while (this.currentSize > this.maxDataPoints) {
- this.dropData();
- }
- }
- },
-
- dropData: function() {
-
- this.forEach(function(item) {
- item.data.splice(0, 1);
- } );
-
- this.currentSize -= 1;
- },
-
- getIndex: function () {
- return this.currentIndex;
- }
-} );
-
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/styles/cubism.css
----------------------------------------------------------------------
diff --git a/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/styles/cubism.css b/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/styles/cubism.css
deleted file mode 100644
index b572148..0000000
--- a/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/styles/cubism.css
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * D3 visualization components
- * Styles for Dag viewer and Sankey diagram
- */
-.wfdag {
- width: 100%;
-}
-
-#dag_viewer .axis path,
-#dag_viewer .axis line {
- fill: none;
- stroke: #000;
- shape-rendering: crispEdges;
-}
-
-#dag_viewer line.link,
-#dag_viewer path.link {
- fill: none;
- stroke: #666;
- stroke-width: 2.5px;
-}
-
-#dag_viewer line.link.finished,
-#dag_viewer path.link.finished {
- stroke: #444;
-}
-
-#dag_viewer marker#finished {
- fill: #444;
-}
-
-#dag_viewer marker#circle {
- fill: #666;
- stroke: none;
-}
-
-#dag_viewer line.source.mark,
-#dag_viewer line.target.mark {
- stroke: #666;
- stroke-width: 2.5px;
-}
-
-#dag_viewer rect {
- fill: #ccc;
- stroke: #333;
- stroke-width: 1px;
-}
-
-#dag_viewer rect.finished {
- fill: green;
- fill-opacity: 0.8;
-}
-
-#dag_viewer text.joblabel {
- pointer-events: none;
- text-anchor: middle;
-}
-
-#dag_viewer text.axislabel {
- pointer-events: none;
- text-anchor: middle;
-}
-
-#dag_viewer text.shadow {
- stroke: #fff;
- stroke-width: 3px;
- stroke-opacity: .8;
-}
-
-.map, .shuffle, .reduce {
- fill-opacity: 0.8;
- stroke-width: 2px;
-}
-
-.allmap, .allshuffle, .allreduce {
- fill: none;
- stroke-width: 2px;
-}
-
-.y.axis {
- font-size: 10px;
-}
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/styles/rickshaw.css
----------------------------------------------------------------------
diff --git a/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/styles/rickshaw.css b/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/styles/rickshaw.css
deleted file mode 100644
index 9102bd4..0000000
--- a/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/styles/rickshaw.css
+++ /dev/null
@@ -1,307 +0,0 @@
-.rickshaw_graph .detail {
- pointer-events: none;
- position: absolute;
- top: 0;
- z-index: 2;
- background: rgba(0, 0, 0, 0.1);
- bottom: 0;
- width: 1px;
- transition: opacity 0.25s linear;
- -moz-transition: opacity 0.25s linear;
- -o-transition: opacity 0.25s linear;
- -webkit-transition: opacity 0.25s linear;
-}
-.rickshaw_graph .detail.inactive {
- opacity: 0;
-}
-.rickshaw_graph .detail .item.active {
- opacity: 1;
-}
-.rickshaw_graph .detail .x_label {
- font-family: Arial, sans-serif;
- border-radius: 3px;
- padding: 6px;
- opacity: 0.5;
- border: 1px solid #e0e0e0;
- font-size: 12px;
- position: absolute;
- background: white;
- white-space: nowrap;
-}
-.rickshaw_graph .detail .item {
- position: absolute;
- z-index: 2;
- border-radius: 3px;
- padding: 0.25em;
- font-size: 12px;
- font-family: Arial, sans-serif;
- opacity: 0;
- background: rgba(0, 0, 0, 0.4);
- color: white;
- border: 1px solid rgba(0, 0, 0, 0.4);
- margin-left: 1em;
- margin-top: -1em;
- white-space: nowrap;
-}
-.rickshaw_graph .detail .item.active {
- opacity: 1;
- background: rgba(0, 0, 0, 0.8);
-}
-.rickshaw_graph .detail .item:before {
- content: "\25c2";
- position: absolute;
- left: -0.5em;
- color: rgba(0, 0, 0, 0.7);
- width: 0;
-}
-.rickshaw_graph .detail .dot {
- width: 4px;
- height: 4px;
- margin-left: -4px;
- margin-top: -3px;
- border-radius: 5px;
- position: absolute;
- box-shadow: 0 0 2px rgba(0, 0, 0, 0.6);
- background: white;
- border-width: 2px;
- border-style: solid;
- display: none;
- background-clip: padding-box;
-}
-.rickshaw_graph .detail .dot.active {
- display: block;
-}
-/* graph */
-
-.rickshaw_graph {
- position: relative;
-}
-.rickshaw_graph svg {
- display: block;
- overflow: hidden;
-}
-
-/* ticks */
-
-.rickshaw_graph .x_tick {
- position: absolute;
- top: 0;
- bottom: 0;
- width: 0px;
- border-left: 1px dotted rgba(0, 0, 0, 0.2);
- pointer-events: none;
-}
-.rickshaw_graph .x_tick .title {
- position: absolute;
- font-size: 12px;
- font-family: Arial, sans-serif;
- opacity: 0.5;
- white-space: nowrap;
- margin-left: 3px;
- bottom: 1px;
-}
-
-/* annotations */
-
-.rickshaw_annotation_timeline {
- height: 1px;
- border-top: 1px solid #e0e0e0;
- margin-top: 10px;
- position: relative;
-}
-.rickshaw_annotation_timeline .annotation {
- position: absolute;
- height: 6px;
- width: 6px;
- margin-left: -2px;
- top: -3px;
- border-radius: 5px;
- background-color: rgba(0, 0, 0, 0.25);
-}
-.rickshaw_graph .annotation_line {
- position: absolute;
- top: 0;
- bottom: -6px;
- width: 0px;
- border-left: 2px solid rgba(0, 0, 0, 0.3);
- display: none;
-}
-.rickshaw_graph .annotation_line.active {
- display: block;
-}
-
-.rickshaw_graph .annotation_range {
- background: rgba(0, 0, 0, 0.1);
- display: none;
- position: absolute;
- top: 0;
- bottom: -6px;
- z-index: -10;
-}
-.rickshaw_graph .annotation_range.active {
- display: block;
-}
-.rickshaw_graph .annotation_range.active.offscreen {
- display: none;
-}
-
-.rickshaw_annotation_timeline .annotation .content {
- background: white;
- color: black;
- opacity: 0.9;
- padding: 5px 5px;
- box-shadow: 0 0 2px rgba(0, 0, 0, 0.8);
- border-radius: 3px;
- position: relative;
- z-index: 20;
- font-size: 12px;
- padding: 6px 8px 8px;
- top: 18px;
- left: -11px;
- width: 160px;
- display: none;
- cursor: pointer;
-}
-.rickshaw_annotation_timeline .annotation .content:before {
- content: "\25b2";
- position: absolute;
- top: -11px;
- color: white;
- text-shadow: 0 -1px 1px rgba(0, 0, 0, 0.8);
-}
-.rickshaw_annotation_timeline .annotation.active,
-.rickshaw_annotation_timeline .annotation:hover {
- background-color: rgba(0, 0, 0, 0.8);
- cursor: none;
-}
-.rickshaw_annotation_timeline .annotation .content:hover {
- z-index: 50;
-}
-.rickshaw_annotation_timeline .annotation.active .content {
- display: block;
-}
-.rickshaw_annotation_timeline .annotation:hover .content {
- display: block;
- z-index: 50;
-}
-.rickshaw_graph .y_axis {
- fill: none;
-}
-.rickshaw_graph .y_ticks .tick {
- stroke: rgba(0, 0, 0, 0.16);
- stroke-width: 2px;
- shape-rendering: crisp-edges;
- pointer-events: none;
-}
-.rickshaw_graph .y_grid .tick {
- z-index: -1;
- stroke: rgba(0, 0, 0, 0.20);
- stroke-width: 1px;
- stroke-dasharray: 1 1;
-}
-.rickshaw_graph .y_grid path {
- fill: none;
- stroke: none;
-}
-.rickshaw_graph .y_ticks path {
- fill: none;
- stroke: #808080;
-}
-.rickshaw_graph .y_ticks text {
- opacity: 0.5;
- font-size: 12px;
- pointer-events: none;
-}
-.rickshaw_graph .x_tick.glow .title,
-.rickshaw_graph .y_ticks.glow text {
- fill: black;
- color: black;
- text-shadow:
- -1px 1px 0 rgba(255, 255, 255, 0.1),
- 1px -1px 0 rgba(255, 255, 255, 0.1),
- 1px 1px 0 rgba(255, 255, 255, 0.1),
- 0px 1px 0 rgba(255, 255, 255, 0.1),
- 0px -1px 0 rgba(255, 255, 255, 0.1),
- 1px 0px 0 rgba(255, 255, 255, 0.1),
- -1px 0px 0 rgba(255, 255, 255, 0.1),
- -1px -1px 0 rgba(255, 255, 255, 0.1);
-}
-.rickshaw_graph .x_tick.inverse .title,
-.rickshaw_graph .y_ticks.inverse text {
- fill: white;
- color: white;
- text-shadow:
- -1px 1px 0 rgba(0, 0, 0, 0.8),
- 1px -1px 0 rgba(0, 0, 0, 0.8),
- 1px 1px 0 rgba(0, 0, 0, 0.8),
- 0px 1px 0 rgba(0, 0, 0, 0.8),
- 0px -1px 0 rgba(0, 0, 0, 0.8),
- 1px 0px 0 rgba(0, 0, 0, 0.8),
- -1px 0px 0 rgba(0, 0, 0, 0.8),
- -1px -1px 0 rgba(0, 0, 0, 0.8);
-}
-.rickshaw_legend {
- font-family: Arial;
- font-size: 12px;
- color: white;
- background: #404040;
- display: inline-block;
- padding: 12px 5px;
- border-radius: 2px;
- position: relative;
-}
-.rickshaw_legend:hover {
- z-index: 10;
-}
-.rickshaw_legend .swatch {
- width: 10px;
- height: 10px;
- border: 1px solid rgba(0, 0, 0, 0.2);
-}
-.rickshaw_legend .line {
- clear: both;
- line-height: 140%;
- padding-right: 15px;
-}
-.rickshaw_legend .line .swatch {
- display: inline-block;
- margin-right: 3px;
- border-radius: 2px;
-}
-.rickshaw_legend .label {
- white-space: nowrap;
- display: inline;
-}
-.rickshaw_legend .action:hover {
- opacity: 0.6;
-}
-.rickshaw_legend .action {
- margin-right: 0.2em;
- font-size: 10px;
- opacity: 0.2;
- cursor: pointer;
- font-size: 14px;
-}
-.rickshaw_legend .line.disabled {
- opacity: 0.4;
-}
-.rickshaw_legend ul {
- list-style-type: none;
- margin: 0;
- padding: 0;
- margin: 2px;
- cursor: pointer;
-}
-.rickshaw_legend li {
- padding: 0 0 0 2px;
- min-width: 80px;
- white-space: nowrap;
-}
-.rickshaw_legend li:hover {
- background: rgba(255, 255, 255, 0.08);
- border-radius: 3px;
-}
-.rickshaw_legend li:active {
- background: rgba(255, 255, 255, 0.2);
- border-radius: 3px;
-}
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/contrib/views/slider/src/main/resources/ui/app/assets/data/apps/apps.json
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/assets/data/apps/apps.json b/contrib/views/slider/src/main/resources/ui/app/assets/data/apps/apps.json
index fccb7a5..7a00c14 100644
--- a/contrib/views/slider/src/main/resources/ui/app/assets/data/apps/apps.json
+++ b/contrib/views/slider/src/main/resources/ui/app/assets/data/apps/apps.json
@@ -59,16 +59,6 @@
"version" : "1.0.0",
"view_name" : "SLIDER",
"yarnId" : "application_1401266754647_0003",
- "metrics" : {
- "metric1" : "",
- "metric2" : "",
- "metric3" : "",
- "metric4" : "",
- "metric5" : "",
- "metric6" : "",
- "metric7" : "",
- "metric8" : ""
- },
"components" : {
"HBASE_MASTER" : {
"componentName" : "HBASE_MASTER",
@@ -238,18 +228,7 @@
"yarn.timeline-service.webapp.https.address" : "c6401.ambari.apache.org:8190"
}
},
- "jmx" : {
- "ClusterId" : "67ee848a-8576-45d3-9b18-cdda4eb6c025",
- "DeadRegionServers" : "1",
- "IsActiveMaster" : "true",
- "MasterActiveTime" : "1401332251511",
- "MasterStartTime" : "1401332248911",
- "RegionServers" : "1",
- "ServerName" : "c6401.ambari.apache.org,60000,1401332245896",
- "ZookeeperQuorum" : "c6401.ambari.apache.org:2181",
- "cluster_requests" : "14496",
- "metricAverageLoad" : "2.0"
- },
+ "jmx" : { },
"urls" : {
"JMX" : "http://c6401.ambari.apache.org:39505/jmx",
"Metrics" : "http://c6401.ambari.apache.org/cgi-bin/rrd.py?c=Application1",
@@ -257,4 +236,4 @@
}
}
]
-}
+}
\ No newline at end of file
[5/8] Revert "AMBARI-5928. Create and populate Metrics section of a
slider app. (onechiporenko)" - changes made in ambari-web
Posted by sr...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/ambari-web/contrib/views/slider/src/main/resources/ui/app/views/slider_app/metrics/metric3_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/contrib/views/slider/src/main/resources/ui/app/views/slider_app/metrics/metric3_view.js b/ambari-web/contrib/views/slider/src/main/resources/ui/app/views/slider_app/metrics/metric3_view.js
deleted file mode 100644
index 66e7917..0000000
--- a/ambari-web/contrib/views/slider/src/main/resources/ui/app/views/slider_app/metrics/metric3_view.js
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with this
- * work for additional information regarding copyright ownership. The ASF
- * licenses this file to you 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.
- */
-
-/**
- * @class
- *
- * This is a view for showing cluster CPU metrics
- *
- * @extends App.ChartView
- * @extends Ember.Object
- * @extends Ember.View
- */
-App.Metric3View = App.ChartView.extend({
- id: "service-metrics-hdfs-file-operations",
- title: 'File Operations',
- renderer: 'line',
-
- ajaxIndex: 'metrics3',
- yAxisFormatter: App.ChartView.CreateRateFormatter('ops', App.ChartView.DefaultFormatter),
-
- transformToSeries: function (jsonData) {
- var seriesArray = [];
- if (jsonData && jsonData.metrics && jsonData.metrics.dfs && jsonData.metrics.dfs.namenode) {
- for ( var name in jsonData.metrics.dfs.namenode) {
- var displayName;
- var seriesData = jsonData.metrics.dfs.namenode[name];
- switch (name) {
- case "FileInfoOps":
- displayName = 'File Info Ops';
- break;
- case "DeleteFileOps":
- displayName = 'Delete File Ops';
- break;
- case "CreateFileOps":
- displayName = 'Create File Ops';
- break;
- default:
- break;
- }
- if (seriesData) {
- seriesArray.push(this.transformData(seriesData, displayName));
- }
- }
- }
- return seriesArray;
- }
-});
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/ambari-web/contrib/views/slider/src/main/resources/ui/app/views/slider_app/metrics/metric4_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/contrib/views/slider/src/main/resources/ui/app/views/slider_app/metrics/metric4_view.js b/ambari-web/contrib/views/slider/src/main/resources/ui/app/views/slider_app/metrics/metric4_view.js
deleted file mode 100644
index 9f9298b..0000000
--- a/ambari-web/contrib/views/slider/src/main/resources/ui/app/views/slider_app/metrics/metric4_view.js
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with this
- * work for additional information regarding copyright ownership. The ASF
- * licenses this file to you 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.
- */
-
-/**
- * @class
- *
- * This is a view for showing cluster CPU metrics
- *
- * @extends App.ChartView
- * @extends Ember.Object
- * @extends Ember.View
- */
-App.Metric4View = App.ChartView.extend({
- id: "service-metrics-hdfs-rpc",
- title: 'RPC',
- yAxisFormatter: App.ChartView.TimeElapsedFormatter,
-
- ajaxIndex: 'metrics4',
-
- transformToSeries: function (jsonData) {
- var seriesArray = [];
- if (jsonData && jsonData.metrics && jsonData.metrics.rpc) {
- for ( var name in jsonData.metrics.rpc) {
- var displayName;
- var seriesData = jsonData.metrics.rpc[name];
- switch (name) {
- case "RpcQueueTime_avg_time":
- displayName = 'RPC Queue Time Avg Time';
- break;
- default:
- break;
- }
- if (seriesData) {
- seriesArray.push(this.transformData(seriesData, displayName));
- }
- }
- }
- return seriesArray;
- }
-});
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/ambari-web/contrib/views/slider/src/main/resources/ui/app/views/slider_app/metrics/metric_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/contrib/views/slider/src/main/resources/ui/app/views/slider_app/metrics/metric_view.js b/ambari-web/contrib/views/slider/src/main/resources/ui/app/views/slider_app/metrics/metric_view.js
deleted file mode 100644
index 61a5739..0000000
--- a/ambari-web/contrib/views/slider/src/main/resources/ui/app/views/slider_app/metrics/metric_view.js
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with this
- * work for additional information regarding copyright ownership. The ASF
- * licenses this file to you 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.
- */
-
-/**
- * @class
- *
- * This is a view for showing cluster CPU metrics
- *
- * @extends App.ChartView
- * @extends Ember.Object
- * @extends Ember.View
- */
-App.MetricView = App.ChartView.extend({
-
- id: "service-metrics-hdfs-space-utilization",
-
- title: 'Space Utilization',
-
- yAxisFormatter: App.ChartView.BytesFormatter,
-
- renderer: 'line',
-
- ajaxIndex: 'metrics',
-
- transformToSeries: function (jsonData) {
- var seriesArray = [];
- var GB = Math.pow(2, 30);
- if (jsonData && jsonData.metrics && jsonData.metrics.dfs && jsonData.metrics.dfs.FSNamesystem) {
- for ( var name in jsonData.metrics.dfs.FSNamesystem) {
- var displayName;
- var seriesData = jsonData.metrics.dfs.FSNamesystem[name];
- switch (name) {
- case "CapacityRemainingGB":
- displayName = 'Capacity Remaining GB';
- break;
- case "CapacityUsedGB":
- displayName = 'Capacity Used GB';
- break;
- case "CapacityTotalGB":
- displayName = 'Capacity Total GB';
- break;
- default:
- break;
- }
- if (seriesData) {
- var s = this.transformData(seriesData, displayName);
- for (var i = 0; i < s.data.length; i++) {
- s.data[i].y *= GB;
- }
- seriesArray.push(s);
- }
- }
- }
- return seriesArray;
- }
-});
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/ambari-web/contrib/views/slider/src/main/resources/ui/app/views/slider_app/summary_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/contrib/views/slider/src/main/resources/ui/app/views/slider_app/summary_view.js b/ambari-web/contrib/views/slider/src/main/resources/ui/app/views/slider_app/summary_view.js
deleted file mode 100644
index bad2eb9..0000000
--- a/ambari-web/contrib/views/slider/src/main/resources/ui/app/views/slider_app/summary_view.js
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-App.SliderAppSummaryView = Ember.View.extend({
-
- classNames: ['app_summary'],
-
- graphs: [
- [App.MetricView, App.Metric2View, App.Metric3View, App.Metric4View]
- ]
-
-});
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/cubism.v1.js
----------------------------------------------------------------------
diff --git a/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/cubism.v1.js b/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/cubism.v1.js
deleted file mode 100644
index be9ff4d..0000000
--- a/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/cubism.v1.js
+++ /dev/null
@@ -1,1085 +0,0 @@
-(function (exports) {
- var cubism = exports.cubism = {version:"1.2.0"};
- var cubism_id = 0;
-
- function cubism_identity(d) {
- return d;
- }
-
- cubism.option = function (name, defaultValue) {
- var values = cubism.options(name);
- return values.length ? values[0] : defaultValue;
- };
-
- cubism.options = function (name, defaultValues) {
- var options = location.search.substring(1).split("&"),
- values = [],
- i = -1,
- n = options.length,
- o;
- while (++i < n) {
- if ((o = options[i].split("="))[0] == name) {
- values.push(decodeURIComponent(o[1]));
- }
- }
- return values.length || arguments.length < 2 ? values : defaultValues;
- };
- cubism.context = function () {
- var context = new cubism_context,
- step = 1e4, // ten seconds, in milliseconds
- size = 1440, // four hours at ten seconds, in pixels
- start0, stop0, // the start and stop for the previous change event
- start1, stop1, // the start and stop for the next prepare event
- serverDelay = 5e3,
- clientDelay = 5e3,
- event = d3.dispatch("prepare", "beforechange", "change", "focus"),
- scale = context.scale = d3.time.scale().range([0, size]),
- timeout,
- focus;
-
- function update() {
- var now = Date.now();
- stop0 = new Date(Math.floor((now - serverDelay - clientDelay) / step) * step);
- start0 = new Date(stop0 - size * step);
- stop1 = new Date(Math.floor((now - serverDelay) / step) * step);
- start1 = new Date(stop1 - size * step);
- scale.domain([start0, stop0]);
- return context;
- }
-
- context.start = function () {
- if (timeout) clearTimeout(timeout);
- var delay = +stop1 + serverDelay - Date.now();
-
- // If we're too late for the first prepare event, skip it.
- if (delay < clientDelay) delay += step;
-
- timeout = setTimeout(function prepare() {
- stop1 = new Date(Math.floor((Date.now() - serverDelay) / step) * step);
- start1 = new Date(stop1 - size * step);
- event.prepare.call(context, start1, stop1);
-
- setTimeout(function () {
- scale.domain([start0 = start1, stop0 = stop1]);
- event.beforechange.call(context, start1, stop1);
- event.change.call(context, start1, stop1);
- event.focus.call(context, focus);
- }, clientDelay);
-
- timeout = setTimeout(prepare, step);
- }, delay);
- return context;
- };
-
- context.stop = function () {
- timeout = clearTimeout(timeout);
- return context;
- };
-
- timeout = setTimeout(context.start, 10);
-
- // Set or get the step interval in milliseconds.
- // Defaults to ten seconds.
- context.step = function (_) {
- if (!arguments.length) return step;
- step = +_;
- return update();
- };
-
- // Set or get the context size (the count of metric values).
- // Defaults to 1440 (four hours at ten seconds).
- context.size = function (_) {
- if (!arguments.length) return size;
- scale.range([0, size = +_]);
- return update();
- };
-
- // The server delay is the amount of time we wait for the server to compute a
- // metric. This delay may result from clock skew or from delays collecting
- // metrics from various hosts. Defaults to 4 seconds.
- context.serverDelay = function (_) {
- if (!arguments.length) return serverDelay;
- serverDelay = +_;
- return update();
- };
-
- // The client delay is the amount of additional time we wait to fetch those
- // metrics from the server. The client and server delay combined represent the
- // age of the most recent displayed metric. Defaults to 1 second.
- context.clientDelay = function (_) {
- if (!arguments.length) return clientDelay;
- clientDelay = +_;
- return update();
- };
-
- // Sets the focus to the specified index, and dispatches a "focus" event.
- context.focus = function (i) {
- event.focus.call(context, focus = i);
- return context;
- };
-
- // Add, remove or get listeners for events.
- context.on = function (type, listener) {
- if (arguments.length < 2) return event.on(type);
-
- event.on(type, listener);
-
- // Notify the listener of the current start and stop time, as appropriate.
- // This way, metrics can make requests for data immediately,
- // and likewise the axis can display itself synchronously.
- if (listener != null) {
- if (/^prepare(\.|$)/.test(type)) listener.call(context, start1, stop1);
- if (/^beforechange(\.|$)/.test(type)) listener.call(context, start0, stop0);
- if (/^change(\.|$)/.test(type)) listener.call(context, start0, stop0);
- if (/^focus(\.|$)/.test(type)) listener.call(context, focus);
- }
-
- return context;
- };
-
- d3.select(window).on("keydown.context-" + ++cubism_id, function () {
- switch (!d3.event.metaKey && d3.event.keyCode) {
- case 37: // left
- if (focus == null) focus = size - 1;
- if (focus > 0) context.focus(--focus);
- break;
- case 39: // right
- if (focus == null) focus = size - 2;
- if (focus < size - 1) context.focus(++focus);
- break;
- default:
- return;
- }
- d3.event.preventDefault();
- });
-
- return update();
- };
-
- function cubism_context() {
- }
-
- var cubism_contextPrototype = cubism.context.prototype = cubism_context.prototype;
-
- cubism_contextPrototype.constant = function (value) {
- return new cubism_metricConstant(this, +value);
- };
- cubism_contextPrototype.cube = function (host) {
- if (!arguments.length) host = "";
- var source = {},
- context = this;
-
- source.metric = function (expression) {
- return context.metric(function (start, stop, step, callback) {
- d3.json(host + "/1.0/metric"
- + "?expression=" + encodeURIComponent(expression)
- + "&start=" + cubism_cubeFormatDate(start)
- + "&stop=" + cubism_cubeFormatDate(stop)
- + "&step=" + step, function (data) {
- if (!data) return callback(new Error("unable to load data"));
- callback(null, data.map(function (d) {
- return d.value;
- }));
- });
- }, expression += "");
- };
-
- // Returns the Cube host.
- source.toString = function () {
- return host;
- };
-
- return source;
- };
-
- var cubism_cubeFormatDate = d3.time.format.iso;
- cubism_contextPrototype.graphite = function (host) {
- if (!arguments.length) host = "";
- var source = {},
- context = this;
-
- source.metric = function (expression) {
- var sum = "sum";
-
- var metric = context.metric(function (start, stop, step, callback) {
- var target = expression;
-
- // Apply the summarize, if necessary.
- if (step !== 1e4) target = "summarize(" + target + ",'"
- + (!(step % 36e5) ? step / 36e5 + "hour" : !(step % 6e4) ? step / 6e4 + "min" : step + "sec")
- + "','" + sum + "')";
-
- d3.text(host + "/render?format=raw"
- + "&target=" + encodeURIComponent("alias(" + target + ",'')")
- + "&from=" + cubism_graphiteFormatDate(start - 2 * step) // off-by-two?
- + "&until=" + cubism_graphiteFormatDate(stop - 1000), function (text) {
- if (!text) return callback(new Error("unable to load data"));
- callback(null, cubism_graphiteParse(text));
- });
- }, expression += "");
-
- metric.summarize = function (_) {
- sum = _;
- return metric;
- };
-
- return metric;
- };
-
- source.find = function (pattern, callback) {
- d3.json(host + "/metrics/find?format=completer"
- + "&query=" + encodeURIComponent(pattern), function (result) {
- if (!result) return callback(new Error("unable to find metrics"));
- callback(null, result.metrics.map(function (d) {
- return d.path;
- }));
- });
- };
-
- // Returns the graphite host.
- source.toString = function () {
- return host;
- };
-
- return source;
- };
-
-// Graphite understands seconds since UNIX epoch.
- function cubism_graphiteFormatDate(time) {
- return Math.floor(time / 1000);
- }
-
-// Helper method for parsing graphite's raw format.
- function cubism_graphiteParse(text) {
- var i = text.indexOf("|"),
- meta = text.substring(0, i),
- c = meta.lastIndexOf(","),
- b = meta.lastIndexOf(",", c - 1),
- a = meta.lastIndexOf(",", b - 1),
- start = meta.substring(a + 1, b) * 1000,
- step = meta.substring(c + 1) * 1000;
- return text
- .substring(i + 1)
- .split(",")
- .slice(1)// the first value is always None?
- .map(function (d) {
- return +d;
- });
- }
-
- function cubism_metric(context) {
- if (!(context instanceof cubism_context)) throw new Error("invalid context");
- this.context = context;
- }
-
- var cubism_metricPrototype = cubism_metric.prototype;
-
- cubism.metric = cubism_metric;
-
- cubism_metricPrototype.valueAt = function () {
- return NaN;
- };
-
- cubism_metricPrototype.alias = function (name) {
- this.toString = function () {
- return name;
- };
- return this;
- };
-
- cubism_metricPrototype.extent = function () {
- var i = 0,
- n = this.context.size(),
- value,
- min = Infinity,
- max = -Infinity;
- while (++i < n) {
- value = this.valueAt(i);
- if (value < min) min = value;
- if (value > max) max = value;
- }
- return [min, max];
- };
-
- cubism_metricPrototype.on = function (type, listener) {
- return arguments.length < 2 ? null : this;
- };
-
- cubism_metricPrototype.shift = function () {
- return this;
- };
-
- cubism_metricPrototype.on = function () {
- return arguments.length < 2 ? null : this;
- };
-
- cubism_contextPrototype.metric = function (request, name) {
- var context = this,
- metric = new cubism_metric(context),
- id = ".metric-" + ++cubism_id,
- start = -Infinity,
- stop,
- step = context.step(),
- size = context.size(),
- values = [],
- event = d3.dispatch("change"),
- listening = 0,
- fetching;
-
- // Prefetch new data into a temporary array.
- function prepare(start1, stop) {
- var steps = Math.min(size, Math.round((start1 - start) / step));
- if (!steps || fetching) return; // already fetched, or fetching!
- fetching = true;
- steps = Math.min(size, steps + cubism_metricOverlap);
- var start0 = new Date(stop - steps * step);
- request(start0, stop, step, function (error, data) {
- fetching = false;
- if (error) return console.warn(error);
- var i = isFinite(start) ? Math.round((start0 - start) / step) : 0;
- for (var j = 0, m = data.length; j < m; ++j) values[j + i] = data[j];
- event.change.call(metric, start, stop);
- });
- }
-
- // When the context changes, switch to the new data, ready-or-not!
- function beforechange(start1, stop1) {
- if (!isFinite(start)) start = start1;
- values.splice(0, Math.max(0, Math.min(size, Math.round((start1 - start) / step))));
- start = start1;
- stop = stop1;
- }
-
- //
- metric.valueAt = function (i) {
- return values[i];
- };
-
- //
- metric.shift = function (offset) {
- return context.metric(cubism_metricShift(request, +offset));
- };
-
- //
- metric.on = function (type, listener) {
- if (!arguments.length) return event.on(type);
-
- // If there are no listeners, then stop listening to the context,
- // and avoid unnecessary fetches.
- if (listener == null) {
- if (event.on(type) != null && --listening == 0) {
- context.on("prepare" + id, null).on("beforechange" + id, null);
- }
- } else {
- if (event.on(type) == null && ++listening == 1) {
- context.on("prepare" + id, prepare).on("beforechange" + id, beforechange);
- }
- }
-
- event.on(type, listener);
-
- // Notify the listener of the current start and stop time, as appropriate.
- // This way, charts can display synchronous metrics immediately.
- if (listener != null) {
- if (/^change(\.|$)/.test(type)) listener.call(context, start, stop);
- }
-
- return metric;
- };
-
- //
- if (arguments.length > 1) metric.toString = function () {
- return name;
- };
-
- return metric;
- };
-
-// Number of metric to refetch each period, in case of lag.
- var cubism_metricOverlap = 6;
-
-// Wraps the specified request implementation, and shifts time by the given offset.
- function cubism_metricShift(request, offset) {
- return function (start, stop, step, callback) {
- request(new Date(+start + offset), new Date(+stop + offset), step, callback);
- };
- }
-
- function cubism_metricConstant(context, value) {
- cubism_metric.call(this, context);
- value = +value;
- var name = value + "";
- this.valueOf = function () {
- return value;
- };
- this.toString = function () {
- return name;
- };
- }
-
- var cubism_metricConstantPrototype = cubism_metricConstant.prototype = Object.create(cubism_metric.prototype);
-
- cubism_metricConstantPrototype.valueAt = function () {
- return +this;
- };
-
- cubism_metricConstantPrototype.extent = function () {
- return [+this, +this];
- };
- function cubism_metricOperator(name, operate) {
-
- function cubism_metricOperator(left, right) {
- if (!(right instanceof cubism_metric)) right = new cubism_metricConstant(left.context, right);
- else if (left.context !== right.context) throw new Error("mismatch context");
- cubism_metric.call(this, left.context);
- this.left = left;
- this.right = right;
- this.toString = function () {
- return left + " " + name + " " + right;
- };
- }
-
- var cubism_metricOperatorPrototype = cubism_metricOperator.prototype = Object.create(cubism_metric.prototype);
-
- cubism_metricOperatorPrototype.valueAt = function (i) {
- return operate(this.left.valueAt(i), this.right.valueAt(i));
- };
-
- cubism_metricOperatorPrototype.shift = function (offset) {
- return new cubism_metricOperator(this.left.shift(offset), this.right.shift(offset));
- };
-
- cubism_metricOperatorPrototype.on = function (type, listener) {
- if (arguments.length < 2) return this.left.on(type);
- this.left.on(type, listener);
- this.right.on(type, listener);
- return this;
- };
-
- return function (right) {
- return new cubism_metricOperator(this, right);
- };
- }
-
- cubism_metricPrototype.add = cubism_metricOperator("+", function (left, right) {
- return left + right;
- });
-
- cubism_metricPrototype.subtract = cubism_metricOperator("-", function (left, right) {
- return left - right;
- });
-
- cubism_metricPrototype.multiply = cubism_metricOperator("*", function (left, right) {
- return left * right;
- });
-
- cubism_metricPrototype.divide = cubism_metricOperator("/", function (left, right) {
- return left / right;
- });
- cubism_contextPrototype.horizon = function () {
- var context = this,
- mode = "offset",
- buffer = document.createElement("canvas"),
- width = buffer.width = context.size(),
- height = buffer.height = 30,
- scale = d3.scale.linear().interpolate(d3.interpolateRound),
- metric = cubism_identity,
- extent = null,
- title = cubism_identity,
- format = d3.format(".2s"),
- colors = ["#08519c", "#3182bd", "#6baed6", "#bdd7e7", "#bae4b3", "#74c476", "#31a354", "#006d2c"];
-
- function horizon(selection) {
-
- selection
- .on("mousemove.horizon", function () {
- context.focus(d3.mouse(this)[0]);
- })
- .on("mouseout.horizon", function () {
- context.focus(null);
- });
-
- selection.append("canvas")
- .attr("width", width)
- .attr("height", height);
-
- selection.append("span")
- .attr("class", "title")
- .text(title);
-
- selection.append("span")
- .attr("class", "value");
-
- selection.each(function (d, i) {
- var that = this,
- id = ++cubism_id,
- metric_ = typeof metric === "function" ? metric.call(that, d, i) : metric,
- colors_ = typeof colors === "function" ? colors.call(that, d, i) : colors,
- extent_ = typeof extent === "function" ? extent.call(that, d, i) : extent,
- start = -Infinity,
- step = context.step(),
- canvas = d3.select(that).select("canvas"),
- span = d3.select(that).select(".value"),
- max_,
- m = colors_.length >> 1,
- ready;
-
- canvas.datum({id:id, metric:metric_});
- canvas = canvas.node().getContext("2d");
-
- function change(start1, stop) {
- canvas.save();
-
- // compute the new extent and ready flag
- var extent = metric_.extent();
- ready = extent.every(isFinite);
- if (extent_ != null) extent = extent_;
-
- // if this is an update (with no extent change), copy old values!
- var i0 = 0, max = Math.max(-extent[0], extent[1]);
- if (this === context) {
- if (max == max_) {
- i0 = width - cubism_metricOverlap;
- var dx = (start1 - start) / step;
- if (dx < width) {
- var canvas0 = buffer.getContext("2d");
- canvas0.clearRect(0, 0, width, height);
- canvas0.drawImage(canvas.canvas, dx, 0, width - dx, height, 0, 0, width - dx, height);
- canvas.clearRect(0, 0, width, height);
- canvas.drawImage(canvas0.canvas, 0, 0);
- }
- }
- start = start1;
- }
-
- // update the domain
- scale.domain([0, max_ = max]);
-
- // clear for the new data
- canvas.clearRect(i0, 0, width - i0, height);
-
- // record whether there are negative values to display
- var negative;
-
- // positive bands
- for (var j = 0; j < m; ++j) {
- canvas.fillStyle = colors_[m + j];
-
- // Adjust the range based on the current band index.
- var y0 = (j - m + 1) * height;
- scale.range([m * height + y0, y0]);
- y0 = scale(0);
-
- for (var i = i0, n = width, y1; i < n; ++i) {
- y1 = metric_.valueAt(i);
- if (y1 <= 0) {
- negative = true;
- continue;
- }
- canvas.fillRect(i, y1 = scale(y1), 1, y0 - y1);
- }
- }
-
- if (negative) {
- // enable offset mode
- if (mode === "offset") {
- canvas.translate(0, height);
- canvas.scale(1, -1);
- }
-
- // negative bands
- for (var j = 0; j < m; ++j) {
- canvas.fillStyle = colors_[m - 1 - j];
-
- // Adjust the range based on the current band index.
- var y0 = (j - m + 1) * height;
- scale.range([m * height + y0, y0]);
- y0 = scale(0);
-
- for (var i = i0, n = width, y1; i < n; ++i) {
- y1 = metric_.valueAt(i);
- if (y1 >= 0) continue;
- canvas.fillRect(i, scale(-y1), 1, y0 - scale(-y1));
- }
- }
- }
-
- canvas.restore();
- }
-
- function focus(i) {
- if (i == null) i = width - 1;
- var value = metric_.valueAt(i);
- span.datum(value).text(isNaN(value) ? null : format);
- }
-
- // Update the chart when the context changes.
- context.on("change.horizon-" + id, change);
- context.on("focus.horizon-" + id, focus);
-
- // Display the first metric change immediately,
- // but defer subsequent updates to the canvas change.
- // Note that someone still needs to listen to the metric,
- // so that it continues to update automatically.
- metric_.on("change.horizon-" + id, function (start, stop) {
- change(start, stop), focus();
- if (ready) metric_.on("change.horizon-" + id, cubism_identity);
- });
- });
- }
-
- horizon.remove = function (selection) {
-
- selection
- .on("mousemove.horizon", null)
- .on("mouseout.horizon", null);
-
- selection.selectAll("canvas")
- .each(remove)
- .remove();
-
- selection.selectAll(".title,.value")
- .remove();
-
- function remove(d) {
- d.metric.on("change.horizon-" + d.id, null);
- context.on("change.horizon-" + d.id, null);
- context.on("focus.horizon-" + d.id, null);
- }
- };
-
- horizon.mode = function (_) {
- if (!arguments.length) return mode;
- mode = _ + "";
- return horizon;
- };
-
- horizon.height = function (_) {
- if (!arguments.length) return height;
- buffer.height = height = +_;
- return horizon;
- };
-
- horizon.metric = function (_) {
- if (!arguments.length) return metric;
- metric = _;
- return horizon;
- };
-
- horizon.scale = function (_) {
- if (!arguments.length) return scale;
- scale = _;
- return horizon;
- };
-
- horizon.extent = function (_) {
- if (!arguments.length) return extent;
- extent = _;
- return horizon;
- };
-
- horizon.title = function (_) {
- if (!arguments.length) return title;
- title = _;
- return horizon;
- };
-
- horizon.format = function (_) {
- if (!arguments.length) return format;
- format = _;
- return horizon;
- };
-
- horizon.colors = function (_) {
- if (!arguments.length) return colors;
- colors = _;
- return horizon;
- };
-
- return horizon;
- };
- cubism_contextPrototype.comparison = function () {
- var context = this,
- width = context.size(),
- height = 120,
- scale = d3.scale.linear().interpolate(d3.interpolateRound),
- primary = function (d) {
- return d[0];
- },
- secondary = function (d) {
- return d[1];
- },
- extent = null,
- title = cubism_identity,
- formatPrimary = cubism_comparisonPrimaryFormat,
- formatChange = cubism_comparisonChangeFormat,
- colors = ["#9ecae1", "#225b84", "#a1d99b", "#22723a"],
- strokeWidth = 1.5;
-
- function comparison(selection) {
-
- selection
- .on("mousemove.comparison", function () {
- context.focus(d3.mouse(this)[0]);
- })
- .on("mouseout.comparison", function () {
- context.focus(null);
- });
-
- selection.append("canvas")
- .attr("width", width)
- .attr("height", height);
-
- selection.append("span")
- .attr("class", "title")
- .text(title);
-
- selection.append("span")
- .attr("class", "value primary");
-
- selection.append("span")
- .attr("class", "value change");
-
- selection.each(function (d, i) {
- var that = this,
- id = ++cubism_id,
- primary_ = typeof primary === "function" ? primary.call(that, d, i) : primary,
- secondary_ = typeof secondary === "function" ? secondary.call(that, d, i) : secondary,
- extent_ = typeof extent === "function" ? extent.call(that, d, i) : extent,
- div = d3.select(that),
- canvas = div.select("canvas"),
- spanPrimary = div.select(".value.primary"),
- spanChange = div.select(".value.change"),
- ready;
-
- canvas.datum({id:id, primary:primary_, secondary:secondary_});
- canvas = canvas.node().getContext("2d");
-
- function change(start, stop) {
- canvas.save();
- canvas.clearRect(0, 0, width, height);
-
- // update the scale
- var primaryExtent = primary_.extent(),
- secondaryExtent = secondary_.extent(),
- extent = extent_ == null ? primaryExtent : extent_;
- scale.domain(extent).range([height, 0]);
- ready = primaryExtent.concat(secondaryExtent).every(isFinite);
-
- // consistent overplotting
- var round = start / context.step() & 1
- ? cubism_comparisonRoundOdd
- : cubism_comparisonRoundEven;
-
- // positive changes
- canvas.fillStyle = colors[2];
- for (var i = 0, n = width; i < n; ++i) {
- var y0 = scale(primary_.valueAt(i)),
- y1 = scale(secondary_.valueAt(i));
- if (y0 < y1) canvas.fillRect(round(i), y0, 1, y1 - y0);
- }
-
- // negative changes
- canvas.fillStyle = colors[0];
- for (i = 0; i < n; ++i) {
- var y0 = scale(primary_.valueAt(i)),
- y1 = scale(secondary_.valueAt(i));
- if (y0 > y1) canvas.fillRect(round(i), y1, 1, y0 - y1);
- }
-
- // positive values
- canvas.fillStyle = colors[3];
- for (i = 0; i < n; ++i) {
- var y0 = scale(primary_.valueAt(i)),
- y1 = scale(secondary_.valueAt(i));
- if (y0 <= y1) canvas.fillRect(round(i), y0, 1, strokeWidth);
- }
-
- // negative values
- canvas.fillStyle = colors[1];
- for (i = 0; i < n; ++i) {
- var y0 = scale(primary_.valueAt(i)),
- y1 = scale(secondary_.valueAt(i));
- if (y0 > y1) canvas.fillRect(round(i), y0 - strokeWidth, 1, strokeWidth);
- }
-
- canvas.restore();
- }
-
- function focus(i) {
- if (i == null) i = width - 1;
- var valuePrimary = primary_.valueAt(i),
- valueSecondary = secondary_.valueAt(i),
- valueChange = (valuePrimary - valueSecondary) / valueSecondary;
-
- spanPrimary
- .datum(valuePrimary)
- .text(isNaN(valuePrimary) ? null : formatPrimary);
-
- spanChange
- .datum(valueChange)
- .text(isNaN(valueChange) ? null : formatChange)
- .attr("class", "value change " + (valueChange > 0 ? "positive" : valueChange < 0 ? "negative" : ""));
- }
-
- // Display the first primary change immediately,
- // but defer subsequent updates to the context change.
- // Note that someone still needs to listen to the metric,
- // so that it continues to update automatically.
- primary_.on("change.comparison-" + id, firstChange);
- secondary_.on("change.comparison-" + id, firstChange);
- function firstChange(start, stop) {
- change(start, stop), focus();
- if (ready) {
- primary_.on("change.comparison-" + id, cubism_identity);
- secondary_.on("change.comparison-" + id, cubism_identity);
- }
- }
-
- // Update the chart when the context changes.
- context.on("change.comparison-" + id, change);
- context.on("focus.comparison-" + id, focus);
- });
- }
-
- comparison.remove = function (selection) {
-
- selection
- .on("mousemove.comparison", null)
- .on("mouseout.comparison", null);
-
- selection.selectAll("canvas")
- .each(remove)
- .remove();
-
- selection.selectAll(".title,.value")
- .remove();
-
- function remove(d) {
- d.primary.on("change.comparison-" + d.id, null);
- d.secondary.on("change.comparison-" + d.id, null);
- context.on("change.comparison-" + d.id, null);
- context.on("focus.comparison-" + d.id, null);
- }
- };
-
- comparison.height = function (_) {
- if (!arguments.length) return height;
- height = +_;
- return comparison;
- };
-
- comparison.primary = function (_) {
- if (!arguments.length) return primary;
- primary = _;
- return comparison;
- };
-
- comparison.secondary = function (_) {
- if (!arguments.length) return secondary;
- secondary = _;
- return comparison;
- };
-
- comparison.scale = function (_) {
- if (!arguments.length) return scale;
- scale = _;
- return comparison;
- };
-
- comparison.extent = function (_) {
- if (!arguments.length) return extent;
- extent = _;
- return comparison;
- };
-
- comparison.title = function (_) {
- if (!arguments.length) return title;
- title = _;
- return comparison;
- };
-
- comparison.formatPrimary = function (_) {
- if (!arguments.length) return formatPrimary;
- formatPrimary = _;
- return comparison;
- };
-
- comparison.formatChange = function (_) {
- if (!arguments.length) return formatChange;
- formatChange = _;
- return comparison;
- };
-
- comparison.colors = function (_) {
- if (!arguments.length) return colors;
- colors = _;
- return comparison;
- };
-
- comparison.strokeWidth = function (_) {
- if (!arguments.length) return strokeWidth;
- strokeWidth = _;
- return comparison;
- };
-
- return comparison;
- };
-
- var cubism_comparisonPrimaryFormat = d3.format(".2s"),
- cubism_comparisonChangeFormat = d3.format("+.0%");
-
- function cubism_comparisonRoundEven(i) {
- return i & 0xfffffe;
- }
-
- function cubism_comparisonRoundOdd(i) {
- return ((i + 1) & 0xfffffe) - 1;
- }
-
- cubism_contextPrototype.axis = function () {
- var context = this,
- scale = context.scale,
- axis_ = d3.svg.axis().scale(scale);
-
- var format = context.step() < 6e4 ? cubism_axisFormatSeconds
- : context.step() < 864e5 ? cubism_axisFormatMinutes
- : cubism_axisFormatDays;
-
- function axis(selection) {
- var id = ++cubism_id,
- tick;
-
- var g = selection.append("svg")
- .datum({id:id})
- .attr("width", context.size())
- .attr("height", Math.max(28, -axis.tickSize()))
- .append("g")
- .attr("transform", "translate(0," + (axis_.orient() === "top" ? 27 : 4) + ")")
- .call(axis_);
-
- context.on("change.axis-" + id, function () {
- g.call(axis_);
- if (!tick) tick = d3.select(g.node().appendChild(g.selectAll("text").node().cloneNode(true)))
- .style("display", "none")
- .text(null);
- });
-
- context.on("focus.axis-" + id, function (i) {
- if (tick) {
- if (i == null) {
- tick.style("display", "none");
- g.selectAll("text").style("fill-opacity", null);
- } else {
- tick.style("display", null).attr("x", i).text(format(scale.invert(i)));
- var dx = tick.node().getComputedTextLength() + 6;
- g.selectAll("text").style("fill-opacity", function (d) {
- return Math.abs(scale(d) - i) < dx ? 0 : 1;
- });
- }
- }
- });
- }
-
- axis.remove = function (selection) {
-
- selection.selectAll("svg")
- .each(remove)
- .remove();
-
- function remove(d) {
- context.on("change.axis-" + d.id, null);
- context.on("focus.axis-" + d.id, null);
- }
- };
-
- return d3.rebind(axis, axis_,
- "orient",
- "ticks",
- "tickSubdivide",
- "tickSize",
- "tickPadding",
- "tickFormat");
- };
-
- var cubism_axisFormatSeconds = d3.time.format("%I:%M:%S %p"),
- cubism_axisFormatMinutes = d3.time.format("%I:%M %p"),
- cubism_axisFormatDays = d3.time.format("%B %d");
- cubism_contextPrototype.rule = function () {
- var context = this,
- metric = cubism_identity;
-
- function rule(selection) {
- var id = ++cubism_id;
-
- var line = selection.append("div")
- .datum({id:id})
- .attr("class", "line")
- .call(cubism_ruleStyle);
-
- selection.each(function (d, i) {
- var that = this,
- id = ++cubism_id,
- metric_ = typeof metric === "function" ? metric.call(that, d, i) : metric;
-
- if (!metric_) return;
-
- function change(start, stop) {
- var values = [];
-
- for (var i = 0, n = context.size(); i < n; ++i) {
- if (metric_.valueAt(i)) {
- values.push(i);
- }
- }
-
- var lines = selection.selectAll(".metric").data(values);
- lines.exit().remove();
- lines.enter().append("div").attr("class", "metric line").call(cubism_ruleStyle);
- lines.style("left", cubism_ruleLeft);
- }
-
- context.on("change.rule-" + id, change);
- metric_.on("change.rule-" + id, change);
- });
-
- context.on("focus.rule-" + id, function (i) {
- line.datum(i)
- .style("display", i == null ? "none" : null)
- .style("left", cubism_ruleLeft);
- });
- }
-
- rule.remove = function (selection) {
-
- selection.selectAll(".line")
- .each(remove)
- .remove();
-
- function remove(d) {
- context.on("focus.rule-" + d.id, null);
- }
- };
-
- rule.metric = function (_) {
- if (!arguments.length) return metric;
- metric = _;
- return rule;
- };
-
- return rule;
- };
-
- function cubism_ruleStyle(line) {
- line
- .style("position", "absolute")
- .style("top", 0)
- .style("bottom", 0)
- .style("width", "1px")
- .style("pointer-events", "none");
- }
-
- function cubism_ruleLeft(i) {
- return i + "px";
- }
-})(this);
[3/8] Revert "AMBARI-5928. Create and populate Metrics section of a
slider app. (onechiporenko)" - changes made in ambari-web
Posted by sr...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/jquery.ui.core.js
----------------------------------------------------------------------
diff --git a/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/jquery.ui.core.js b/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/jquery.ui.core.js
deleted file mode 100644
index 1285a6d..0000000
--- a/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/jquery.ui.core.js
+++ /dev/null
@@ -1,334 +0,0 @@
-/*!
- * jQuery UI 1.8.23
- *
- * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI
- */
-(function( $, undefined ) {
-
-// prevent duplicate loading
-// this is only a problem because we proxy existing functions
-// and we don't want to double proxy them
-$.ui = $.ui || {};
-if ( $.ui.version ) {
- return;
-}
-
-$.extend( $.ui, {
- version: "1.8.23",
-
- keyCode: {
- ALT: 18,
- BACKSPACE: 8,
- CAPS_LOCK: 20,
- COMMA: 188,
- COMMAND: 91,
- COMMAND_LEFT: 91, // COMMAND
- COMMAND_RIGHT: 93,
- CONTROL: 17,
- DELETE: 46,
- DOWN: 40,
- END: 35,
- ENTER: 13,
- ESCAPE: 27,
- HOME: 36,
- INSERT: 45,
- LEFT: 37,
- MENU: 93, // COMMAND_RIGHT
- NUMPAD_ADD: 107,
- NUMPAD_DECIMAL: 110,
- NUMPAD_DIVIDE: 111,
- NUMPAD_ENTER: 108,
- NUMPAD_MULTIPLY: 106,
- NUMPAD_SUBTRACT: 109,
- PAGE_DOWN: 34,
- PAGE_UP: 33,
- PERIOD: 190,
- RIGHT: 39,
- SHIFT: 16,
- SPACE: 32,
- TAB: 9,
- UP: 38,
- WINDOWS: 91 // COMMAND
- }
-});
-
-// plugins
-$.fn.extend({
- propAttr: $.fn.prop || $.fn.attr,
-
- _focus: $.fn.focus,
- focus: function( delay, fn ) {
- return typeof delay === "number" ?
- this.each(function() {
- var elem = this;
- setTimeout(function() {
- $( elem ).focus();
- if ( fn ) {
- fn.call( elem );
- }
- }, delay );
- }) :
- this._focus.apply( this, arguments );
- },
-
- scrollParent: function() {
- var scrollParent;
- if (($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {
- scrollParent = this.parents().filter(function() {
- return (/(relative|absolute|fixed)/).test($.curCSS(this,'position',1)) && (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));
- }).eq(0);
- } else {
- scrollParent = this.parents().filter(function() {
- return (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));
- }).eq(0);
- }
-
- return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;
- },
-
- zIndex: function( zIndex ) {
- if ( zIndex !== undefined ) {
- return this.css( "zIndex", zIndex );
- }
-
- if ( this.length ) {
- var elem = $( this[ 0 ] ), position, value;
- while ( elem.length && elem[ 0 ] !== document ) {
- // Ignore z-index if position is set to a value where z-index is ignored by the browser
- // This makes behavior of this function consistent across browsers
- // WebKit always returns auto if the element is positioned
- position = elem.css( "position" );
- if ( position === "absolute" || position === "relative" || position === "fixed" ) {
- // IE returns 0 when zIndex is not specified
- // other browsers return a string
- // we ignore the case of nested elements with an explicit value of 0
- // <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
- value = parseInt( elem.css( "zIndex" ), 10 );
- if ( !isNaN( value ) && value !== 0 ) {
- return value;
- }
- }
- elem = elem.parent();
- }
- }
-
- return 0;
- },
-
- disableSelection: function() {
- return this.bind( ( $.support.selectstart ? "selectstart" : "mousedown" ) +
- ".ui-disableSelection", function( event ) {
- event.preventDefault();
- });
- },
-
- enableSelection: function() {
- return this.unbind( ".ui-disableSelection" );
- }
-});
-
-// support: jQuery <1.8
-if ( !$( "<a>" ).outerWidth( 1 ).jquery ) {
- $.each( [ "Width", "Height" ], function( i, name ) {
- var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
- type = name.toLowerCase(),
- orig = {
- innerWidth: $.fn.innerWidth,
- innerHeight: $.fn.innerHeight,
- outerWidth: $.fn.outerWidth,
- outerHeight: $.fn.outerHeight
- };
-
- function reduce( elem, size, border, margin ) {
- $.each( side, function() {
- size -= parseFloat( $.curCSS( elem, "padding" + this, true) ) || 0;
- if ( border ) {
- size -= parseFloat( $.curCSS( elem, "border" + this + "Width", true) ) || 0;
- }
- if ( margin ) {
- size -= parseFloat( $.curCSS( elem, "margin" + this, true) ) || 0;
- }
- });
- return size;
- }
-
- $.fn[ "inner" + name ] = function( size ) {
- if ( size === undefined ) {
- return orig[ "inner" + name ].call( this );
- }
-
- return this.each(function() {
- $( this ).css( type, reduce( this, size ) + "px" );
- });
- };
-
- $.fn[ "outer" + name] = function( size, margin ) {
- if ( typeof size !== "number" ) {
- return orig[ "outer" + name ].call( this, size );
- }
-
- return this.each(function() {
- $( this).css( type, reduce( this, size, true, margin ) + "px" );
- });
- };
- });
-}
-
-// selectors
-function focusable( element, isTabIndexNotNaN ) {
- var nodeName = element.nodeName.toLowerCase();
- if ( "area" === nodeName ) {
- var map = element.parentNode,
- mapName = map.name,
- img;
- if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
- return false;
- }
- img = $( "img[usemap=#" + mapName + "]" )[0];
- return !!img && visible( img );
- }
- return ( /input|select|textarea|button|object/.test( nodeName )
- ? !element.disabled
- : "a" == nodeName
- ? element.href || isTabIndexNotNaN
- : isTabIndexNotNaN)
- // the element and all of its ancestors must be visible
- && visible( element );
-}
-
-function visible( element ) {
- return !$( element ).parents().andSelf().filter(function() {
- return $.curCSS( this, "visibility" ) === "hidden" ||
- $.expr.filters.hidden( this );
- }).length;
-}
-
-$.extend( $.expr[ ":" ], {
- data: $.expr.createPseudo ?
- $.expr.createPseudo(function( dataName ) {
- return function( elem ) {
- return !!$.data( elem, dataName );
- };
- }) :
- // support: jQuery <1.8
- function( elem, i, match ) {
- return !!$.data( elem, match[ 3 ] );
- },
-
- focusable: function( element ) {
- return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) );
- },
-
- tabbable: function( element ) {
- var tabIndex = $.attr( element, "tabindex" ),
- isTabIndexNaN = isNaN( tabIndex );
- return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN );
- }
-});
-
-// support
-$(function() {
- var body = document.body,
- div = body.appendChild( div = document.createElement( "div" ) );
-
- // access offsetHeight before setting the style to prevent a layout bug
- // in IE 9 which causes the elemnt to continue to take up space even
- // after it is removed from the DOM (#8026)
- div.offsetHeight;
-
- $.extend( div.style, {
- minHeight: "100px",
- height: "auto",
- padding: 0,
- borderWidth: 0
- });
-
- $.support.minHeight = div.offsetHeight === 100;
- $.support.selectstart = "onselectstart" in div;
-
- // set display to none to avoid a layout bug in IE
- // http://dev.jquery.com/ticket/4014
- body.removeChild( div ).style.display = "none";
-});
-
-// jQuery <1.4.3 uses curCSS, in 1.4.3 - 1.7.2 curCSS = css, 1.8+ only has css
-if ( !$.curCSS ) {
- $.curCSS = $.css;
-}
-
-
-
-
-
-// deprecated
-$.extend( $.ui, {
- // $.ui.plugin is deprecated. Use the proxy pattern instead.
- plugin: {
- add: function( module, option, set ) {
- var proto = $.ui[ module ].prototype;
- for ( var i in set ) {
- proto.plugins[ i ] = proto.plugins[ i ] || [];
- proto.plugins[ i ].push( [ option, set[ i ] ] );
- }
- },
- call: function( instance, name, args ) {
- var set = instance.plugins[ name ];
- if ( !set || !instance.element[ 0 ].parentNode ) {
- return;
- }
-
- for ( var i = 0; i < set.length; i++ ) {
- if ( instance.options[ set[ i ][ 0 ] ] ) {
- set[ i ][ 1 ].apply( instance.element, args );
- }
- }
- }
- },
-
- // will be deprecated when we switch to jQuery 1.4 - use jQuery.contains()
- contains: function( a, b ) {
- return document.compareDocumentPosition ?
- a.compareDocumentPosition( b ) & 16 :
- a !== b && a.contains( b );
- },
-
- // only used by resizable
- hasScroll: function( el, a ) {
-
- //If overflow is hidden, the element might have extra content, but the user wants to hide it
- if ( $( el ).css( "overflow" ) === "hidden") {
- return false;
- }
-
- var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop",
- has = false;
-
- if ( el[ scroll ] > 0 ) {
- return true;
- }
-
- // TODO: determine which cases actually cause this to happen
- // if the element doesn't have the scroll set, see if it's possible to
- // set the scroll
- el[ scroll ] = 1;
- has = ( el[ scroll ] > 0 );
- el[ scroll ] = 0;
- return has;
- },
-
- // these are odd functions, fix the API or move into individual plugins
- isOverAxis: function( x, reference, size ) {
- //Determines when x coordinate is over "b" element axis
- return ( x > reference ) && ( x < ( reference + size ) );
- },
- isOver: function( y, x, top, left, height, width ) {
- //Determines when x, y coordinates is over "b" element
- return $.ui.isOverAxis( y, top, height ) && $.ui.isOverAxis( x, left, width );
- }
-});
-
-})( jQuery );
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/jquery.ui.mouse.js
----------------------------------------------------------------------
diff --git a/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/jquery.ui.mouse.js b/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/jquery.ui.mouse.js
deleted file mode 100644
index 78c8ef6..0000000
--- a/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/jquery.ui.mouse.js
+++ /dev/null
@@ -1,175 +0,0 @@
-/*!
- * jQuery UI Mouse 1.8.23
- *
- * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Mouse
- *
- * Depends:
- * jquery.ui.widget.js
- */
-(function ($, undefined) {
-
- var mouseHandled = false;
- $(document).mouseup(function (e) {
- mouseHandled = false;
- });
-
- $.widget("ui.mouse", {
- options:{
- cancel:':input,option',
- distance:1,
- delay:0
- },
- _mouseInit:function () {
- var self = this;
-
- this.element
- .bind('mousedown.' + this.widgetName, function (event) {
- return self._mouseDown(event);
- })
- .bind('click.' + this.widgetName, function (event) {
- if (true === $.data(event.target, self.widgetName + '.preventClickEvent')) {
- $.removeData(event.target, self.widgetName + '.preventClickEvent');
- event.stopImmediatePropagation();
- return false;
- }
- });
-
- this.started = false;
- },
-
- // TODO: make sure destroying one instance of mouse doesn't mess with
- // other instances of mouse
- _mouseDestroy:function () {
- this.element.unbind('.' + this.widgetName);
- if (this._mouseMoveDelegate) {
- $(document)
- .unbind('mousemove.' + this.widgetName, this._mouseMoveDelegate)
- .unbind('mouseup.' + this.widgetName, this._mouseUpDelegate);
- }
- },
-
- _mouseDown:function (event) {
- // don't let more than one widget handle mouseStart
- if (mouseHandled) {
- return
- }
- ;
-
- // we may have missed mouseup (out of window)
- (this._mouseStarted && this._mouseUp(event));
-
- this._mouseDownEvent = event;
-
- var self = this,
- btnIsLeft = (event.which == 1),
- // event.target.nodeName works around a bug in IE 8 with
- // disabled inputs (#7620)
- elIsCancel = (typeof this.options.cancel == "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false);
- if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {
- return true;
- }
-
- this.mouseDelayMet = !this.options.delay;
- if (!this.mouseDelayMet) {
- this._mouseDelayTimer = setTimeout(function () {
- self.mouseDelayMet = true;
- }, this.options.delay);
- }
-
- if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
- this._mouseStarted = (this._mouseStart(event) !== false);
- if (!this._mouseStarted) {
- event.preventDefault();
- return true;
- }
- }
-
- // Click event may never have fired (Gecko & Opera)
- if (true === $.data(event.target, this.widgetName + '.preventClickEvent')) {
- $.removeData(event.target, this.widgetName + '.preventClickEvent');
- }
-
- // these delegates are required to keep context
- this._mouseMoveDelegate = function (event) {
- return self._mouseMove(event);
- };
- this._mouseUpDelegate = function (event) {
- return self._mouseUp(event);
- };
- $(document)
- .bind('mousemove.' + this.widgetName, this._mouseMoveDelegate)
- .bind('mouseup.' + this.widgetName, this._mouseUpDelegate);
-
- event.preventDefault();
-
- mouseHandled = true;
- return true;
- },
-
- _mouseMove:function (event) {
- // IE mouseup check - mouseup happened when mouse was out of window
- if ($.browser.msie && !(document.documentMode >= 9) && !event.button) {
- return this._mouseUp(event);
- }
-
- if (this._mouseStarted) {
- this._mouseDrag(event);
- return event.preventDefault();
- }
-
- if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
- this._mouseStarted =
- (this._mouseStart(this._mouseDownEvent, event) !== false);
- (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));
- }
-
- return !this._mouseStarted;
- },
-
- _mouseUp:function (event) {
- $(document)
- .unbind('mousemove.' + this.widgetName, this._mouseMoveDelegate)
- .unbind('mouseup.' + this.widgetName, this._mouseUpDelegate);
-
- if (this._mouseStarted) {
- this._mouseStarted = false;
-
- if (event.target == this._mouseDownEvent.target) {
- $.data(event.target, this.widgetName + '.preventClickEvent', true);
- }
-
- this._mouseStop(event);
- }
-
- return false;
- },
-
- _mouseDistanceMet:function (event) {
- return (Math.max(
- Math.abs(this._mouseDownEvent.pageX - event.pageX),
- Math.abs(this._mouseDownEvent.pageY - event.pageY)
- ) >= this.options.distance
- );
- },
-
- _mouseDelayMet:function (event) {
- return this.mouseDelayMet;
- },
-
- // These are placeholder methods, to be overriden by extending plugin
- _mouseStart:function (event) {
- },
- _mouseDrag:function (event) {
- },
- _mouseStop:function (event) {
- },
- _mouseCapture:function (event) {
- return true;
- }
- });
-
-})(jQuery);
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/jquery.ui.sortable.js
----------------------------------------------------------------------
diff --git a/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/jquery.ui.sortable.js b/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/jquery.ui.sortable.js
deleted file mode 100644
index 8aa4dc4..0000000
--- a/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/jquery.ui.sortable.js
+++ /dev/null
@@ -1,1088 +0,0 @@
-/*!
- * jQuery UI Sortable 1.9.0
- * http://jqueryui.com
- *
- * Copyright 2012 jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/sortable/
- *
- * Depends:
- * jquery.ui.core.js
- * jquery.ui.mouse.js
- * jquery.ui.widget.js
- */
-(function( $, undefined ) {
-
-$.widget("ui.sortable", $.ui.mouse, {
- version: "1.9.0",
- widgetEventPrefix: "sort",
- ready: false,
- options: {
- appendTo: "parent",
- axis: false,
- connectWith: false,
- containment: false,
- cursor: 'auto',
- cursorAt: false,
- dropOnEmpty: true,
- forcePlaceholderSize: false,
- forceHelperSize: false,
- grid: false,
- handle: false,
- helper: "original",
- items: '> *',
- opacity: false,
- placeholder: false,
- revert: false,
- scroll: true,
- scrollSensitivity: 20,
- scrollSpeed: 20,
- scope: "default",
- tolerance: "intersect",
- zIndex: 1000
- },
- _create: function() {
-
- var o = this.options;
- this.containerCache = {};
- this.element.addClass("ui-sortable");
-
- //Get the items
- this.refresh();
-
- //Let's determine if the items are being displayed horizontally
- this.floating = this.items.length ? o.axis === 'x' || (/left|right/).test(this.items[0].item.css('float')) || (/inline|table-cell/).test(this.items[0].item.css('display')) : false;
-
- //Let's determine the parent's offset
- this.offset = this.element.offset();
-
- //Initialize mouse events for interaction
- this._mouseInit();
-
- //We're ready to go
- this.ready = true
-
- },
-
- _destroy: function() {
- this.element
- .removeClass("ui-sortable ui-sortable-disabled");
- this._mouseDestroy();
-
- for ( var i = this.items.length - 1; i >= 0; i-- )
- this.items[i].item.removeData(this.widgetName + "-item");
-
- return this;
- },
-
- _setOption: function(key, value){
- if ( key === "disabled" ) {
- this.options[ key ] = value;
-
- this.widget().toggleClass( "ui-sortable-disabled", !!value );
- } else {
- // Don't call widget base _setOption for disable as it adds ui-state-disabled class
- $.Widget.prototype._setOption.apply(this, arguments);
- }
- },
-
- _mouseCapture: function(event, overrideHandle) {
- var that = this;
-
- if (this.reverting) {
- return false;
- }
-
- if(this.options.disabled || this.options.type == 'static') return false;
-
- //We have to refresh the items data once first
- this._refreshItems(event);
-
- //Find out if the clicked node (or one of its parents) is a actual item in this.items
- var currentItem = null, nodes = $(event.target).parents().each(function() {
- if($.data(this, that.widgetName + '-item') == that) {
- currentItem = $(this);
- return false;
- }
- });
- if($.data(event.target, that.widgetName + '-item') == that) currentItem = $(event.target);
-
- if(!currentItem) return false;
- if(this.options.handle && !overrideHandle) {
- var validHandle = false;
-
- $(this.options.handle, currentItem).find("*").andSelf().each(function() { if(this == event.target) validHandle = true; });
- if(!validHandle) return false;
- }
-
- this.currentItem = currentItem;
- this._removeCurrentsFromItems();
- return true;
-
- },
-
- _mouseStart: function(event, overrideHandle, noActivation) {
-
- var o = this.options;
- this.currentContainer = this;
-
- //We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture
- this.refreshPositions();
-
- //Create and append the visible helper
- this.helper = this._createHelper(event);
-
- //Cache the helper size
- this._cacheHelperProportions();
-
- /*
- * - Position generation -
- * This block generates everything position related - it's the core of draggables.
- */
-
- //Cache the margins of the original element
- this._cacheMargins();
-
- //Get the next scrolling parent
- this.scrollParent = this.helper.scrollParent();
-
- //The element's absolute position on the page minus margins
- this.offset = this.currentItem.offset();
- this.offset = {
- top: this.offset.top - this.margins.top,
- left: this.offset.left - this.margins.left
- };
-
- $.extend(this.offset, {
- click: { //Where the click happened, relative to the element
- left: event.pageX - this.offset.left,
- top: event.pageY - this.offset.top
- },
- parent: this._getParentOffset(),
- relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper
- });
-
- // Only after we got the offset, we can change the helper's position to absolute
- // TODO: Still need to figure out a way to make relative sorting possible
- this.helper.css("position", "absolute");
- this.cssPosition = this.helper.css("position");
-
- //Generate the original position
- this.originalPosition = this._generatePosition(event);
- this.originalPageX = event.pageX;
- this.originalPageY = event.pageY;
-
- //Adjust the mouse offset relative to the helper if 'cursorAt' is supplied
- (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));
-
- //Cache the former DOM position
- this.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] };
-
- //If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way
- if(this.helper[0] != this.currentItem[0]) {
- this.currentItem.hide();
- }
-
- //Create the placeholder
- this._createPlaceholder();
-
- //Set a containment if given in the options
- if(o.containment)
- this._setContainment();
-
- if(o.cursor) { // cursor option
- if ($('body').css("cursor")) this._storedCursor = $('body').css("cursor");
- $('body').css("cursor", o.cursor);
- }
-
- if(o.opacity) { // opacity option
- if (this.helper.css("opacity")) this._storedOpacity = this.helper.css("opacity");
- this.helper.css("opacity", o.opacity);
- }
-
- if(o.zIndex) { // zIndex option
- if (this.helper.css("zIndex")) this._storedZIndex = this.helper.css("zIndex");
- this.helper.css("zIndex", o.zIndex);
- }
-
- //Prepare scrolling
- if(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML')
- this.overflowOffset = this.scrollParent.offset();
-
- //Call callbacks
- this._trigger("start", event, this._uiHash());
-
- //Recache the helper size
- if(!this._preserveHelperProportions)
- this._cacheHelperProportions();
-
-
- //Post 'activate' events to possible containers
- if(!noActivation) {
- for (var i = this.containers.length - 1; i >= 0; i--) { this.containers[i]._trigger("activate", event, this._uiHash(this)); }
- }
-
- //Prepare possible droppables
- if($.ui.ddmanager)
- $.ui.ddmanager.current = this;
-
- if ($.ui.ddmanager && !o.dropBehaviour)
- $.ui.ddmanager.prepareOffsets(this, event);
-
- this.dragging = true;
-
- this.helper.addClass("ui-sortable-helper");
- this._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position
- return true;
-
- },
-
- _mouseDrag: function(event) {
-
- //Compute the helpers position
- this.position = this._generatePosition(event);
- this.positionAbs = this._convertPositionTo("absolute");
-
- if (!this.lastPositionAbs) {
- this.lastPositionAbs = this.positionAbs;
- }
-
- //Do scrolling
- if(this.options.scroll) {
- var o = this.options, scrolled = false;
- if(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML') {
-
- if((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity)
- this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed;
- else if(event.pageY - this.overflowOffset.top < o.scrollSensitivity)
- this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed;
-
- if((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)
- this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed;
- else if(event.pageX - this.overflowOffset.left < o.scrollSensitivity)
- this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed;
-
- } else {
-
- if(event.pageY - $(document).scrollTop() < o.scrollSensitivity)
- scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);
- else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)
- scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);
-
- if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity)
- scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);
- else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)
- scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);
-
- }
-
- if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour)
- $.ui.ddmanager.prepareOffsets(this, event);
- }
-
- //Regenerate the absolute position used for position checks
- this.positionAbs = this._convertPositionTo("absolute");
-
- //Set the helper position
- if(!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position.left+'px';
- if(!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top+'px';
-
- //Rearrange
- for (var i = this.items.length - 1; i >= 0; i--) {
-
- //Cache variables and intersection, continue if no intersection
- var item = this.items[i], itemElement = item.item[0], intersection = this._intersectsWithPointer(item);
- if (!intersection) continue;
-
- // Only put the placeholder inside the current Container, skip all
- // items form other containers. This works because when moving
- // an item from one container to another the
- // currentContainer is switched before the placeholder is moved.
- //
- // Without this moving items in "sub-sortables" can cause the placeholder to jitter
- // beetween the outer and inner container.
- if (item.instance !== this.currentContainer) continue;
-
- if (itemElement != this.currentItem[0] //cannot intersect with itself
- && this.placeholder[intersection == 1 ? "next" : "prev"]()[0] != itemElement //no useless actions that have been done before
- && !$.contains(this.placeholder[0], itemElement) //no action if the item moved is the parent of the item checked
- && (this.options.type == 'semi-dynamic' ? !$.contains(this.element[0], itemElement) : true)
- //&& itemElement.parentNode == this.placeholder[0].parentNode // only rearrange items within the same container
- ) {
-
- this.direction = intersection == 1 ? "down" : "up";
-
- if (this.options.tolerance == "pointer" || this._intersectsWithSides(item)) {
- this._rearrange(event, item);
- } else {
- break;
- }
-
- this._trigger("change", event, this._uiHash());
- break;
- }
- }
-
- //Post events to containers
- this._contactContainers(event);
-
- //Interconnect with droppables
- if($.ui.ddmanager) $.ui.ddmanager.drag(this, event);
-
- //Call callbacks
- this._trigger('sort', event, this._uiHash());
-
- this.lastPositionAbs = this.positionAbs;
- return false;
-
- },
-
- _mouseStop: function(event, noPropagation) {
-
- if(!event) return;
-
- //If we are using droppables, inform the manager about the drop
- if ($.ui.ddmanager && !this.options.dropBehaviour)
- $.ui.ddmanager.drop(this, event);
-
- if(this.options.revert) {
- var that = this;
- var cur = this.placeholder.offset();
-
- this.reverting = true;
-
- $(this.helper).animate({
- left: cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollLeft),
- top: cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollTop)
- }, parseInt(this.options.revert, 10) || 500, function() {
- that._clear(event);
- });
- } else {
- this._clear(event, noPropagation);
- }
-
- return false;
-
- },
-
- cancel: function() {
-
- if(this.dragging) {
-
- this._mouseUp({ target: null });
-
- if(this.options.helper == "original")
- this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper");
- else
- this.currentItem.show();
-
- //Post deactivating events to containers
- for (var i = this.containers.length - 1; i >= 0; i--){
- this.containers[i]._trigger("deactivate", null, this._uiHash(this));
- if(this.containers[i].containerCache.over) {
- this.containers[i]._trigger("out", null, this._uiHash(this));
- this.containers[i].containerCache.over = 0;
- }
- }
-
- }
-
- if (this.placeholder) {
- //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!
- if(this.placeholder[0].parentNode) this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
- if(this.options.helper != "original" && this.helper && this.helper[0].parentNode) this.helper.remove();
-
- $.extend(this, {
- helper: null,
- dragging: false,
- reverting: false,
- _noFinalSort: null
- });
-
- if(this.domPosition.prev) {
- $(this.domPosition.prev).after(this.currentItem);
- } else {
- $(this.domPosition.parent).prepend(this.currentItem);
- }
- }
-
- return this;
-
- },
-
- serialize: function(o) {
-
- var items = this._getItemsAsjQuery(o && o.connected);
- var str = []; o = o || {};
-
- $(items).each(function() {
- var res = ($(o.item || this).attr(o.attribute || 'id') || '').match(o.expression || (/(.+)[-=_](.+)/));
- if(res) str.push((o.key || res[1]+'[]')+'='+(o.key && o.expression ? res[1] : res[2]));
- });
-
- if(!str.length && o.key) {
- str.push(o.key + '=');
- }
-
- return str.join('&');
-
- },
-
- toArray: function(o) {
-
- var items = this._getItemsAsjQuery(o && o.connected);
- var ret = []; o = o || {};
-
- items.each(function() { ret.push($(o.item || this).attr(o.attribute || 'id') || ''); });
- return ret;
-
- },
-
- /* Be careful with the following core functions */
- _intersectsWith: function(item) {
-
- var x1 = this.positionAbs.left,
- x2 = x1 + this.helperProportions.width,
- y1 = this.positionAbs.top,
- y2 = y1 + this.helperProportions.height;
-
- var l = item.left,
- r = l + item.width,
- t = item.top,
- b = t + item.height;
-
- var dyClick = this.offset.click.top,
- dxClick = this.offset.click.left;
-
- var isOverElement = (y1 + dyClick) > t && (y1 + dyClick) < b && (x1 + dxClick) > l && (x1 + dxClick) < r;
-
- if( this.options.tolerance == "pointer"
- || this.options.forcePointerForContainers
- || (this.options.tolerance != "pointer" && this.helperProportions[this.floating ? 'width' : 'height'] > item[this.floating ? 'width' : 'height'])
- ) {
- return isOverElement;
- } else {
-
- return (l < x1 + (this.helperProportions.width / 2) // Right Half
- && x2 - (this.helperProportions.width / 2) < r // Left Half
- && t < y1 + (this.helperProportions.height / 2) // Bottom Half
- && y2 - (this.helperProportions.height / 2) < b ); // Top Half
-
- }
- },
-
- _intersectsWithPointer: function(item) {
-
- var isOverElementHeight = (this.options.axis === 'x') || $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height),
- isOverElementWidth = (this.options.axis === 'y') || $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width),
- isOverElement = isOverElementHeight && isOverElementWidth,
- verticalDirection = this._getDragVerticalDirection(),
- horizontalDirection = this._getDragHorizontalDirection();
-
- if (!isOverElement)
- return false;
-
- return this.floating ?
- ( ((horizontalDirection && horizontalDirection == "right") || verticalDirection == "down") ? 2 : 1 )
- : ( verticalDirection && (verticalDirection == "down" ? 2 : 1) );
-
- },
-
- _intersectsWithSides: function(item) {
-
- var isOverBottomHalf = $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height),
- isOverRightHalf = $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width),
- verticalDirection = this._getDragVerticalDirection(),
- horizontalDirection = this._getDragHorizontalDirection();
-
- if (this.floating && horizontalDirection) {
- return ((horizontalDirection == "right" && isOverRightHalf) || (horizontalDirection == "left" && !isOverRightHalf));
- } else {
- return verticalDirection && ((verticalDirection == "down" && isOverBottomHalf) || (verticalDirection == "up" && !isOverBottomHalf));
- }
-
- },
-
- _getDragVerticalDirection: function() {
- var delta = this.positionAbs.top - this.lastPositionAbs.top;
- return delta != 0 && (delta > 0 ? "down" : "up");
- },
-
- _getDragHorizontalDirection: function() {
- var delta = this.positionAbs.left - this.lastPositionAbs.left;
- return delta != 0 && (delta > 0 ? "right" : "left");
- },
-
- refresh: function(event) {
- this._refreshItems(event);
- this.refreshPositions();
- return this;
- },
-
- _connectWith: function() {
- var options = this.options;
- return options.connectWith.constructor == String
- ? [options.connectWith]
- : options.connectWith;
- },
-
- _getItemsAsjQuery: function(connected) {
-
- var items = [];
- var queries = [];
- var connectWith = this._connectWith();
-
- if(connectWith && connected) {
- for (var i = connectWith.length - 1; i >= 0; i--){
- var cur = $(connectWith[i]);
- for (var j = cur.length - 1; j >= 0; j--){
- var inst = $.data(cur[j], this.widgetName);
- if(inst && inst != this && !inst.options.disabled) {
- queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(".ui-sortable-helper").not('.ui-sortable-placeholder'), inst]);
- }
- };
- };
- }
-
- queries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(".ui-sortable-helper").not('.ui-sortable-placeholder'), this]);
-
- for (var i = queries.length - 1; i >= 0; i--){
- queries[i][0].each(function() {
- items.push(this);
- });
- };
-
- return $(items);
-
- },
-
- _removeCurrentsFromItems: function() {
-
- var list = this.currentItem.find(":data(" + this.widgetName + "-item)");
-
- for (var i=0; i < this.items.length; i++) {
-
- for (var j=0; j < list.length; j++) {
- if(list[j] == this.items[i].item[0])
- this.items.splice(i,1);
- };
-
- };
-
- },
-
- _refreshItems: function(event) {
-
- this.items = [];
- this.containers = [this];
- var items = this.items;
- var queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]];
- var connectWith = this._connectWith();
-
- if(connectWith && this.ready) { //Shouldn't be run the first time through due to massive slow-down
- for (var i = connectWith.length - 1; i >= 0; i--){
- var cur = $(connectWith[i]);
- for (var j = cur.length - 1; j >= 0; j--){
- var inst = $.data(cur[j], this.widgetName);
- if(inst && inst != this && !inst.options.disabled) {
- queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]);
- this.containers.push(inst);
- }
- };
- };
- }
-
- for (var i = queries.length - 1; i >= 0; i--) {
- var targetData = queries[i][1];
- var _queries = queries[i][0];
-
- for (var j=0, queriesLength = _queries.length; j < queriesLength; j++) {
- var item = $(_queries[j]);
-
- item.data(this.widgetName + '-item', targetData); // Data for target checking (mouse manager)
-
- items.push({
- item: item,
- instance: targetData,
- width: 0, height: 0,
- left: 0, top: 0
- });
- };
- };
-
- },
-
- refreshPositions: function(fast) {
-
- //This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change
- if(this.offsetParent && this.helper) {
- this.offset.parent = this._getParentOffset();
- }
-
- for (var i = this.items.length - 1; i >= 0; i--){
- var item = this.items[i];
-
- //We ignore calculating positions of all connected containers when we're not over them
- if(item.instance != this.currentContainer && this.currentContainer && item.item[0] != this.currentItem[0])
- continue;
-
- var t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item;
-
- if (!fast) {
- item.width = t.outerWidth();
- item.height = t.outerHeight();
- }
-
- var p = t.offset();
- item.left = p.left;
- item.top = p.top;
- };
-
- if(this.options.custom && this.options.custom.refreshContainers) {
- this.options.custom.refreshContainers.call(this);
- } else {
- for (var i = this.containers.length - 1; i >= 0; i--){
- var p = this.containers[i].element.offset();
- this.containers[i].containerCache.left = p.left;
- this.containers[i].containerCache.top = p.top;
- this.containers[i].containerCache.width = this.containers[i].element.outerWidth();
- this.containers[i].containerCache.height = this.containers[i].element.outerHeight();
- };
- }
-
- return this;
- },
-
- _createPlaceholder: function(that) {
- that = that || this;
- var o = that.options;
-
- if(!o.placeholder || o.placeholder.constructor == String) {
- var className = o.placeholder;
- o.placeholder = {
- element: function() {
-
- var el = $(document.createElement(that.currentItem[0].nodeName))
- .addClass(className || that.currentItem[0].className+" ui-sortable-placeholder")
- .removeClass("ui-sortable-helper")[0];
-
- if(!className)
- el.style.visibility = "hidden";
-
- return el;
- },
- update: function(container, p) {
-
- // 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that
- // 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified
- if(className && !o.forcePlaceholderSize) return;
-
- //If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item
- if(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css('paddingTop')||0, 10) - parseInt(that.currentItem.css('paddingBottom')||0, 10)); };
- if(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css('paddingLeft')||0, 10) - parseInt(that.currentItem.css('paddingRight')||0, 10)); };
- }
- };
- }
-
- //Create the placeholder
- that.placeholder = $(o.placeholder.element.call(that.element, that.currentItem));
-
- //Append it after the actual current item
- that.currentItem.after(that.placeholder);
-
- //Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)
- o.placeholder.update(that, that.placeholder);
-
- },
-
- _contactContainers: function(event) {
-
- // get innermost container that intersects with item
- var innermostContainer = null, innermostIndex = null;
-
-
- for (var i = this.containers.length - 1; i >= 0; i--){
-
- // never consider a container that's located within the item itself
- if($.contains(this.currentItem[0], this.containers[i].element[0]))
- continue;
-
- if(this._intersectsWith(this.containers[i].containerCache)) {
-
- // if we've already found a container and it's more "inner" than this, then continue
- if(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0]))
- continue;
-
- innermostContainer = this.containers[i];
- innermostIndex = i;
-
- } else {
- // container doesn't intersect. trigger "out" event if necessary
- if(this.containers[i].containerCache.over) {
- this.containers[i]._trigger("out", event, this._uiHash(this));
- this.containers[i].containerCache.over = 0;
- }
- }
-
- }
-
- // if no intersecting containers found, return
- if(!innermostContainer) return;
-
- // move the item into the container if it's not there already
- if(this.containers.length === 1) {
- this.containers[innermostIndex]._trigger("over", event, this._uiHash(this));
- this.containers[innermostIndex].containerCache.over = 1;
- } else if(this.currentContainer != this.containers[innermostIndex]) {
-
- //When entering a new container, we will find the item with the least distance and append our item near it
- var dist = 10000; var itemWithLeastDistance = null; var base = this.positionAbs[this.containers[innermostIndex].floating ? 'left' : 'top'];
- for (var j = this.items.length - 1; j >= 0; j--) {
- if(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) continue;
- var cur = this.containers[innermostIndex].floating ? this.items[j].item.offset().left : this.items[j].item.offset().top;
- if(Math.abs(cur - base) < dist) {
- dist = Math.abs(cur - base); itemWithLeastDistance = this.items[j];
- this.direction = (cur - base > 0) ? 'down' : 'up';
- }
- }
-
- if(!itemWithLeastDistance && !this.options.dropOnEmpty) //Check if dropOnEmpty is enabled
- return;
-
- this.currentContainer = this.containers[innermostIndex];
- itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true);
- this._trigger("change", event, this._uiHash());
- this.containers[innermostIndex]._trigger("change", event, this._uiHash(this));
-
- //Update the placeholder
- this.options.placeholder.update(this.currentContainer, this.placeholder);
-
- this.containers[innermostIndex]._trigger("over", event, this._uiHash(this));
- this.containers[innermostIndex].containerCache.over = 1;
- }
-
-
- },
-
- _createHelper: function(event) {
-
- var o = this.options;
- var helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper == 'clone' ? this.currentItem.clone() : this.currentItem);
-
- if(!helper.parents('body').length) //Add the helper to the DOM if that didn't happen already
- $(o.appendTo != 'parent' ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]);
-
- if(helper[0] == this.currentItem[0])
- this._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css("position"), top: this.currentItem.css("top"), left: this.currentItem.css("left") };
-
- if(helper[0].style.width == '' || o.forceHelperSize) helper.width(this.currentItem.width());
- if(helper[0].style.height == '' || o.forceHelperSize) helper.height(this.currentItem.height());
-
- return helper;
-
- },
-
- _adjustOffsetFromHelper: function(obj) {
- if (typeof obj == 'string') {
- obj = obj.split(' ');
- }
- if ($.isArray(obj)) {
- obj = {left: +obj[0], top: +obj[1] || 0};
- }
- if ('left' in obj) {
- this.offset.click.left = obj.left + this.margins.left;
- }
- if ('right' in obj) {
- this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
- }
- if ('top' in obj) {
- this.offset.click.top = obj.top + this.margins.top;
- }
- if ('bottom' in obj) {
- this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
- }
- },
-
- _getParentOffset: function() {
-
-
- //Get the offsetParent and cache its position
- this.offsetParent = this.helper.offsetParent();
- var po = this.offsetParent.offset();
-
- // This is a special case where we need to modify a offset calculated on start, since the following happened:
- // 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent
- // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that
- // the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag
- if(this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) {
- po.left += this.scrollParent.scrollLeft();
- po.top += this.scrollParent.scrollTop();
- }
-
- if((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information
- || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.browser.msie)) //Ugly IE fix
- po = { top: 0, left: 0 };
-
- return {
- top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0),
- left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0)
- };
-
- },
-
- _getRelativeOffset: function() {
-
- if(this.cssPosition == "relative") {
- var p = this.currentItem.position();
- return {
- top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(),
- left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft()
- };
- } else {
- return { top: 0, left: 0 };
- }
-
- },
-
- _cacheMargins: function() {
- this.margins = {
- left: (parseInt(this.currentItem.css("marginLeft"),10) || 0),
- top: (parseInt(this.currentItem.css("marginTop"),10) || 0)
- };
- },
-
- _cacheHelperProportions: function() {
- this.helperProportions = {
- width: this.helper.outerWidth(),
- height: this.helper.outerHeight()
- };
- },
-
- _setContainment: function() {
-
- var o = this.options;
- if(o.containment == 'parent') o.containment = this.helper[0].parentNode;
- if(o.containment == 'document' || o.containment == 'window') this.containment = [
- 0 - this.offset.relative.left - this.offset.parent.left,
- 0 - this.offset.relative.top - this.offset.parent.top,
- $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,
- ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top
- ];
-
- if(!(/^(document|window|parent)$/).test(o.containment)) {
- var ce = $(o.containment)[0];
- var co = $(o.containment).offset();
- var over = ($(ce).css("overflow") != 'hidden');
-
- this.containment = [
- co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0) - this.margins.left,
- co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0) - this.margins.top,
- co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left,
- co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top
- ];
- }
-
- },
-
- _convertPositionTo: function(d, pos) {
-
- if(!pos) pos = this.position;
- var mod = d == "absolute" ? 1 : -1;
- var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
-
- return {
- top: (
- pos.top // The absolute mouse position
- + this.offset.relative.top * mod // Only for relative positioned nodes: Relative offset from element to offset parent
- + this.offset.parent.top * mod // The offsetParent's offset without borders (offset + border)
- - ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)
- ),
- left: (
- pos.left // The absolute mouse position
- + this.offset.relative.left * mod // Only for relative positioned nodes: Relative offset from element to offset parent
- + this.offset.parent.left * mod // The offsetParent's offset without borders (offset + border)
- - ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)
- )
- };
-
- },
-
- _generatePosition: function(event) {
-
- var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
-
- // This is another very weird special case that only happens for relative elements:
- // 1. If the css position is relative
- // 2. and the scroll parent is the document or similar to the offset parent
- // we have to refresh the relative offset during the scroll so there are no jumps
- if(this.cssPosition == 'relative' && !(this.scrollParent[0] != document && this.scrollParent[0] != this.offsetParent[0])) {
- this.offset.relative = this._getRelativeOffset();
- }
-
- var pageX = event.pageX;
- var pageY = event.pageY;
-
- /*
- * - Position constraining -
- * Constrain the position to a mix of grid, containment.
- */
-
- if(this.originalPosition) { //If we are not dragging yet, we won't check for options
-
- if(this.containment) {
- if(event.pageX - this.offset.click.left < this.containment[0]) pageX = this.containment[0] + this.offset.click.left;
- if(event.pageY - this.offset.click.top < this.containment[1]) pageY = this.containment[1] + this.offset.click.top;
- if(event.pageX - this.offset.click.left > this.containment[2]) pageX = this.containment[2] + this.offset.click.left;
- if(event.pageY - this.offset.click.top > this.containment[3]) pageY = this.containment[3] + this.offset.click.top;
- }
-
- if(o.grid) {
- var top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];
- pageY = this.containment ? (!(top - this.offset.click.top < this.containment[1] || top - this.offset.click.top > this.containment[3]) ? top : (!(top - this.offset.click.top < this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;
-
- var left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];
- pageX = this.containment ? (!(left - this.offset.click.left < this.containment[0] || left - this.offset.click.left > this.containment[2]) ? left : (!(left - this.offset.click.left < this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;
- }
-
- }
-
- return {
- top: (
- pageY // The absolute mouse position
- - this.offset.click.top // Click offset (relative to the element)
- - this.offset.relative.top // Only for relative positioned nodes: Relative offset from element to offset parent
- - this.offset.parent.top // The offsetParent's offset without borders (offset + border)
- + ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))
- ),
- left: (
- pageX // The absolute mouse position
- - this.offset.click.left // Click offset (relative to the element)
- - this.offset.relative.left // Only for relative positioned nodes: Relative offset from element to offset parent
- - this.offset.parent.left // The offsetParent's offset without borders (offset + border)
- + ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))
- )
- };
-
- },
-
- _rearrange: function(event, i, a, hardRefresh) {
-
- a ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction == 'down' ? i.item[0] : i.item[0].nextSibling));
-
- //Various things done here to improve the performance:
- // 1. we create a setTimeout, that calls refreshPositions
- // 2. on the instance, we have a counter variable, that get's higher after every append
- // 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same
- // 4. this lets only the last addition to the timeout stack through
- this.counter = this.counter ? ++this.counter : 1;
- var counter = this.counter;
-
- // Cause error when sort widgets on dashboard. Error: Object has no _delay method
- //this._delay(function() {
- //if(counter == this.counter) this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove
- //});
-
- },
-
- _clear: function(event, noPropagation) {
-
- this.reverting = false;
- // We delay all events that have to be triggered to after the point where the placeholder has been removed and
- // everything else normalized again
- var delayedTriggers = [];
-
- // We first have to update the dom position of the actual currentItem
- // Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088)
- if(!this._noFinalSort && this.currentItem.parent().length) this.placeholder.before(this.currentItem);
- this._noFinalSort = null;
-
- if(this.helper[0] == this.currentItem[0]) {
- for(var i in this._storedCSS) {
- if(this._storedCSS[i] == 'auto' || this._storedCSS[i] == 'static') this._storedCSS[i] = '';
- }
- this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper");
- } else {
- this.currentItem.show();
- }
-
- if(this.fromOutside && !noPropagation) delayedTriggers.push(function(event) { this._trigger("receive", event, this._uiHash(this.fromOutside)); });
- if((this.fromOutside || this.domPosition.prev != this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent != this.currentItem.parent()[0]) && !noPropagation) delayedTriggers.push(function(event) { this._trigger("update", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed
-
- // Check if the items Container has Changed and trigger appropriate
- // events.
- if (this !== this.currentContainer) {
- if(!noPropagation) {
- delayedTriggers.push(function(event) { this._trigger("remove", event, this._uiHash()); });
- delayedTriggers.push((function(c) { return function(event) { c._trigger("receive", event, this._uiHash(this)); }; }).call(this, this.currentContainer));
- delayedTriggers.push((function(c) { return function(event) { c._trigger("update", event, this._uiHash(this)); }; }).call(this, this.currentContainer));
- }
- }
-
-
- //Post events to containers
- for (var i = this.containers.length - 1; i >= 0; i--){
- if(!noPropagation) delayedTriggers.push((function(c) { return function(event) { c._trigger("deactivate", event, this._uiHash(this)); }; }).call(this, this.containers[i]));
- if(this.containers[i].containerCache.over) {
- delayedTriggers.push((function(c) { return function(event) { c._trigger("out", event, this._uiHash(this)); }; }).call(this, this.containers[i]));
- this.containers[i].containerCache.over = 0;
- }
- }
-
- //Do what was originally in plugins
- if(this._storedCursor) $('body').css("cursor", this._storedCursor); //Reset cursor
- if(this._storedOpacity) this.helper.css("opacity", this._storedOpacity); //Reset opacity
- if(this._storedZIndex) this.helper.css("zIndex", this._storedZIndex == 'auto' ? '' : this._storedZIndex); //Reset z-index
-
- this.dragging = false;
- if(this.cancelHelperRemoval) {
- if(!noPropagation) {
- this._trigger("beforeStop", event, this._uiHash());
- for (var i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events
- this._trigger("stop", event, this._uiHash());
- }
-
- this.fromOutside = false;
- return false;
- }
-
- if(!noPropagation) this._trigger("beforeStop", event, this._uiHash());
-
- //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!
- this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
-
- if(this.helper[0] != this.currentItem[0]) this.helper.remove(); this.helper = null;
-
- if(!noPropagation) {
- for (var i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events
- this._trigger("stop", event, this._uiHash());
- }
-
- this.fromOutside = false;
- return true;
-
- },
-
- _trigger: function() {
- if ($.Widget.prototype._trigger.apply(this, arguments) === false) {
- this.cancel();
- }
- },
-
- _uiHash: function(_inst) {
- var inst = _inst || this;
- return {
- helper: inst.helper,
- placeholder: inst.placeholder || $([]),
- position: inst.position,
- originalPosition: inst.originalPosition,
- offset: inst.positionAbs,
- item: inst.currentItem,
- sender: _inst ? _inst.element : null
- };
- }
-
-});
-
-})(jQuery);
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc28f7ee/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/jquery.ui.widget.js
----------------------------------------------------------------------
diff --git a/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/jquery.ui.widget.js b/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/jquery.ui.widget.js
deleted file mode 100644
index 544ce71..0000000
--- a/ambari-web/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/jquery.ui.widget.js
+++ /dev/null
@@ -1,276 +0,0 @@
-/*!
- * jQuery UI Widget 1.8.23
- *
- * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Widget
- */
-(function ($, undefined) {
-
-// jQuery 1.4+
- if ($.cleanData) {
- var _cleanData = $.cleanData;
- $.cleanData = function (elems) {
- for (var i = 0, elem; (elem = elems[i]) != null; i++) {
- try {
- $(elem).triggerHandler("remove");
- // http://bugs.jquery.com/ticket/8235
- } catch (e) {
- }
- }
- _cleanData(elems);
- };
- } else {
- var _remove = $.fn.remove;
- $.fn.remove = function (selector, keepData) {
- return this.each(function () {
- if (!keepData) {
- if (!selector || $.filter(selector, [ this ]).length) {
- $("*", this).add([ this ]).each(function () {
- try {
- $(this).triggerHandler("remove");
- // http://bugs.jquery.com/ticket/8235
- } catch (e) {
- }
- });
- }
- }
- return _remove.call($(this), selector, keepData);
- });
- };
- }
-
- $.widget = function (name, base, prototype) {
- var namespace = name.split(".")[ 0 ],
- fullName;
- name = name.split(".")[ 1 ];
- fullName = namespace + "-" + name;
-
- if (!prototype) {
- prototype = base;
- base = $.Widget;
- }
-
- // create selector for plugin
- $.expr[ ":" ][ fullName ] = function (elem) {
- return !!$.data(elem, name);
- };
-
- $[ namespace ] = $[ namespace ] || {};
- $[ namespace ][ name ] = function (options, element) {
- // allow instantiation without initializing for simple inheritance
- if (arguments.length) {
- this._createWidget(options, element);
- }
- };
-
- var basePrototype = new base();
- // we need to make the options hash a property directly on the new instance
- // otherwise we'll modify the options hash on the prototype that we're
- // inheriting from
-// $.each( basePrototype, function( key, val ) {
-// if ( $.isPlainObject(val) ) {
-// basePrototype[ key ] = $.extend( {}, val );
-// }
-// });
- basePrototype.options = $.extend(true, {}, basePrototype.options);
- $[ namespace ][ name ].prototype = $.extend(true, basePrototype, {
- namespace:namespace,
- widgetName:name,
- widgetEventPrefix:$[ namespace ][ name ].prototype.widgetEventPrefix || name,
- widgetBaseClass:fullName
- }, prototype);
-
- $.widget.bridge(name, $[ namespace ][ name ]);
- };
-
- $.widget.bridge = function (name, object) {
- $.fn[ name ] = function (options) {
- var isMethodCall = typeof options === "string",
- args = Array.prototype.slice.call(arguments, 1),
- returnValue = this;
-
- // allow multiple hashes to be passed on init
- options = !isMethodCall && args.length ?
- $.extend.apply(null, [ true, options ].concat(args)) :
- options;
-
- // prevent calls to internal methods
- if (isMethodCall && options.charAt(0) === "_") {
- return returnValue;
- }
-
- if (isMethodCall) {
- this.each(function () {
- var instance = $.data(this, name),
- methodValue = instance && $.isFunction(instance[options]) ?
- instance[ options ].apply(instance, args) :
- instance;
- // TODO: add this back in 1.9 and use $.error() (see #5972)
-// if ( !instance ) {
-// throw "cannot call methods on " + name + " prior to initialization; " +
-// "attempted to call method '" + options + "'";
-// }
-// if ( !$.isFunction( instance[options] ) ) {
-// throw "no such method '" + options + "' for " + name + " widget instance";
-// }
-// var methodValue = instance[ options ].apply( instance, args );
- if (methodValue !== instance && methodValue !== undefined) {
- returnValue = methodValue;
- return false;
- }
- });
- } else {
- this.each(function () {
- var instance = $.data(this, name);
- if (instance) {
- instance.option(options || {})._init();
- } else {
- $.data(this, name, new object(options, this));
- }
- });
- }
-
- return returnValue;
- };
- };
-
- $.Widget = function (options, element) {
- // allow instantiation without initializing for simple inheritance
- if (arguments.length) {
- this._createWidget(options, element);
- }
- };
-
- $.Widget.prototype = {
- widgetName:"widget",
- widgetEventPrefix:"",
- options:{
- disabled:false
- },
- _createWidget:function (options, element) {
- // $.widget.bridge stores the plugin instance, but we do it anyway
- // so that it's stored even before the _create function runs
- $.data(element, this.widgetName, this);
- this.element = $(element);
- this.options = $.extend(true, {},
- this.options,
- this._getCreateOptions(),
- options);
-
- var self = this;
- this.element.bind("remove." + this.widgetName, function () {
- self.destroy();
- });
-
- this._create();
- this._trigger("create");
- this._init();
- },
- _getCreateOptions:function () {
- return $.metadata && $.metadata.get(this.element[0])[ this.widgetName ];
- },
- _create:function () {
- },
- _init:function () {
- },
-
- destroy:function () {
- this.element
- .unbind("." + this.widgetName)
- .removeData(this.widgetName);
- this.widget()
- .unbind("." + this.widgetName)
- .removeAttr("aria-disabled")
- .removeClass(
- this.widgetBaseClass + "-disabled " +
- "ui-state-disabled");
- },
-
- widget:function () {
- return this.element;
- },
-
- option:function (key, value) {
- var options = key;
-
- if (arguments.length === 0) {
- // don't return a reference to the internal hash
- return $.extend({}, this.options);
- }
-
- if (typeof key === "string") {
- if (value === undefined) {
- return this.options[ key ];
- }
- options = {};
- options[ key ] = value;
- }
-
- this._setOptions(options);
-
- return this;
- },
- _setOptions:function (options) {
- var self = this;
- $.each(options, function (key, value) {
- self._setOption(key, value);
- });
-
- return this;
- },
- _setOption:function (key, value) {
- this.options[ key ] = value;
-
- if (key === "disabled") {
- this.widget()
- [ value ? "addClass" : "removeClass"](
- this.widgetBaseClass + "-disabled" + " " +
- "ui-state-disabled")
- .attr("aria-disabled", value);
- }
-
- return this;
- },
-
- enable:function () {
- return this._setOption("disabled", false);
- },
- disable:function () {
- return this._setOption("disabled", true);
- },
-
- _trigger:function (type, event, data) {
- var prop, orig,
- callback = this.options[ type ];
-
- data = data || {};
- event = $.Event(event);
- event.type = ( type === this.widgetEventPrefix ?
- type :
- this.widgetEventPrefix + type ).toLowerCase();
- // the original event may come from any element
- // so we need to reset the target on the new event
- event.target = this.element[ 0 ];
-
- // copy original event properties over to the new event
- orig = event.originalEvent;
- if (orig) {
- for (prop in orig) {
- if (!( prop in event )) {
- event[ prop ] = orig[ prop ];
- }
- }
- }
-
- this.element.trigger(event, data);
-
- return !( $.isFunction(callback) &&
- callback.call(this.element[0], event, data) === false ||
- event.isDefaultPrevented() );
- }
- };
-
-})(jQuery);