[49/50] [abbrv] hadoop git commit: YARN-4849. [YARN-3368] cleanup code base, integrate web UI related build to mvn, and fix licenses. (wangda)
YARN-4849. [YARN-3368] cleanup code base, integrate web UI related build to mvn, and fix licenses. (wangda) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/13b8251d Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/13b8251d Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/13b8251d Branch: refs/heads/YARN-3368 Commit: 13b8251dcc363948be4414c862723fc65d0c1d35 Parents: 16ca435 Author: Wangda Tan Authored: Mon Mar 21 14:03:13 2016 -0700 Committer: Wangda Tan Committed: Fri Oct 21 13:56:31 2016 -0700 -- .gitignore | 13 + BUILDING.txt| 4 +- LICENSE.txt | 80 + dev-support/create-release.sh | 144 + dev-support/docker/Dockerfile | 5 + .../src/site/markdown/YarnUI2.md| 43 +++ .../hadoop-yarn/hadoop-yarn-ui/.bowerrc | 4 - .../hadoop-yarn/hadoop-yarn-ui/.editorconfig| 34 --- .../hadoop-yarn/hadoop-yarn-ui/.ember-cli | 11 - .../hadoop-yarn/hadoop-yarn-ui/.gitignore | 17 -- .../hadoop-yarn/hadoop-yarn-ui/.jshintrc| 32 -- .../hadoop-yarn/hadoop-yarn-ui/.travis.yml | 23 -- .../hadoop-yarn/hadoop-yarn-ui/.watchmanconfig | 3 - .../hadoop-yarn/hadoop-yarn-ui/README.md| 24 -- .../hadoop-yarn-ui/app/adapters/cluster-info.js | 20 -- .../app/adapters/cluster-metric.js | 20 -- .../app/adapters/yarn-app-attempt.js| 32 -- .../hadoop-yarn-ui/app/adapters/yarn-app.js | 26 -- .../app/adapters/yarn-container-log.js | 74 - .../app/adapters/yarn-container.js | 43 --- .../app/adapters/yarn-node-app.js | 63 .../app/adapters/yarn-node-container.js | 64 .../hadoop-yarn-ui/app/adapters/yarn-node.js| 40 --- .../hadoop-yarn-ui/app/adapters/yarn-queue.js | 20 -- .../hadoop-yarn-ui/app/adapters/yarn-rm-node.js | 45 --- .../hadoop-yarn/hadoop-yarn-ui/app/app.js | 20 -- .../hadoop-yarn-ui/app/components/.gitkeep | 0 .../app/components/app-attempt-table.js | 4 - .../hadoop-yarn-ui/app/components/app-table.js | 4 - .../hadoop-yarn-ui/app/components/bar-chart.js | 104 --- .../app/components/base-chart-component.js | 109 --- .../app/components/container-table.js | 4 - .../app/components/donut-chart.js | 148 -- .../app/components/item-selector.js | 21 -- .../app/components/queue-configuration-table.js | 4 - .../app/components/queue-navigator.js | 4 - .../hadoop-yarn-ui/app/components/queue-view.js | 272 - .../app/components/simple-table.js | 58 .../app/components/timeline-view.js | 250 .../app/components/tree-selector.js | 257 .../hadoop-yarn/hadoop-yarn-ui/app/config.js| 27 -- .../hadoop-yarn/hadoop-yarn-ui/app/constants.js | 24 -- .../hadoop-yarn-ui/app/controllers/.gitkeep | 0 .../app/controllers/application.js | 55 .../app/controllers/cluster-overview.js | 5 - .../hadoop-yarn-ui/app/controllers/yarn-apps.js | 4 - .../app/controllers/yarn-queue.js | 6 - .../hadoop-yarn-ui/app/helpers/.gitkeep | 0 .../hadoop-yarn-ui/app/helpers/divide.js| 31 -- .../app/helpers/log-files-comma.js | 48 --- .../hadoop-yarn-ui/app/helpers/node-link.js | 37 --- .../hadoop-yarn-ui/app/helpers/node-menu.js | 66 - .../hadoop-yarn/hadoop-yarn-ui/app/index.html | 25 -- .../hadoop-yarn-ui/app/models/.gitkeep | 0 .../hadoop-yarn-ui/app/models/cluster-info.js | 13 - .../hadoop-yarn-ui/app/models/cluster-metric.js | 115 .../app/models/yarn-app-attempt.js | 44 --- .../hadoop-yarn-ui/app/models/yarn-app.js | 65 - .../app/models/yarn-container-log.js| 25 -- .../hadoop-yarn-ui/app/models/yarn-container.js | 39 --- .../hadoop-yarn-ui/app/models/yarn-node-app.js | 44 --- .../app/models/yarn-node-container.js | 57 .../hadoop-yarn-ui/app/models/yarn-node.js | 33 --- .../hadoop-yarn-ui/app/models/yarn-queue.js | 76 - .../hadoop-yarn-ui/app/models/yarn-rm-node.js | 92 -- .../hadoop-yarn-ui/app/models/yarn-user.js | 8 - .../hadoop-yarn/hadoop-yarn-ui/app/router.js| 29 -- .../hadoop-yarn-ui/app/routes/.gitkeep | 0 .../hadoop-yarn-ui/app/routes/application.js| 38 --- .../app/routes/cluster-overview.js | 11 - .../hadoop-yarn-ui/app/routes/index.js | 29 -- .../app/routes/yarn-app-attempt.js | 21 -- .../hadoop-yarn-ui/app/routes/yarn-app.js | 10 - .../hadoop-yar
[49/50] [abbrv] hadoop git commit: YARN-4849. [YARN-3368] cleanup code base, integrate web UI related build to mvn, and fix licenses. (wangda)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/b9b93975/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/simple-table.js -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/simple-table.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/simple-table.js deleted file mode 100644 index 447533e..000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/simple-table.js +++ /dev/null @@ -1,58 +0,0 @@ -import Ember from 'ember'; - -export default Ember.Component.extend({ - didInsertElement: function() { -var paging = this.get("paging") ? true : this.get("paging"); -var ordering = this.get("ordering") ? true : this.get("ordering"); -var info = this.get("info") ? true : this.get("info"); -var bFilter = this.get("bFilter") ? true : this.get("bFilter"); - -// Defines sorter for the columns if not default. -// Can also specify a custom sorter. -var i; -var colDefs = []; -if (this.get("colTypes")) { - var typesArr = this.get("colTypes").split(' '); - var targetsArr = this.get("colTargets").split(' '); - for (i = 0; i < typesArr.length; i++) { -console.log(typesArr[i] + " " + targetsArr[i]); -colDefs.push({ - type: typesArr[i], - targets: parseInt(targetsArr[i]) -}); - } -} -// Defines initial column and sort order. -var orderArr = []; -if (this.get("colsOrder")) { - var cols = this.get("colsOrder").split(' '); - for (i = 0; i < cols.length; i++) { -var col = cols[i].split(','); -if (col.length != 2) { - continue; -} -var order = col[1].trim(); -if (order != 'asc' && order != 'desc') { - continue; -} -var colOrder = []; -colOrder.push(parseInt(col[0])); -colOrder.push(order); -orderArr.push(colOrder); - } -} -if (orderArr.length == 0) { - var defaultOrder = [0, 'asc']; - orderArr.push(defaultOrder); -} -console.log(orderArr[0]); -Ember.$('#' + this.get('table-id')).DataTable({ - "paging": paging, - "ordering": ordering, - "info": info, - "bFilter": bFilter, - "order": orderArr, - "columnDefs": colDefs -}); - } -}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/b9b93975/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/timeline-view.js -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/timeline-view.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/timeline-view.js deleted file mode 100644 index fe402bb..000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/timeline-view.js +++ /dev/null @@ -1,250 +0,0 @@ -import Ember from 'ember'; -import Converter from 'yarn-ui/utils/converter'; - -export default Ember.Component.extend({ - canvas: { -svg: undefined, -h: 0, -w: 0, -tooltip: undefined - }, - - clusterMetrics: undefined, - modelArr: [], - colors: d3.scale.category10().range(), - _selected: undefined, - - selected: function() { -return this._selected; - }.property(), - - tableComponentName: function() { -return "app-attempt-table"; - }.property(), - - setSelected: function(d) { -if (this._selected == d) { - return; -} - -// restore color -if (this._selected) { - var dom = d3.select("#timeline-bar-" + this._selected.get("id")); - dom.attr("fill", this.colors[0]); -} - -this._selected = d; -this.set("selected", d); -dom = d3.select("#timeline-bar-" + d.get("id")); -dom.attr("fill", this.colors[1]); - }, - - getPerItemHeight: function() { -var arrSize = this.modelArr.length; - -if (arrSize < 20) { - return 30; -} else if (arrSize < 100) { - return 10; -} else { - return 2; -} - }, - - getPerItemGap: function() { -var arrSize = this.modelArr.length; - -if (arrSize < 20) { - return 5; -} else if (arrSize < 100) { - return 1; -} else { - return 1; -} - }, - - getCanvasHeight: function() { -return (this.getPerItemHeight() + this.getPerItemGap()) * this.modelArr.length + 200; - }, - - draw: function(start, end) { -// get w/h of the svg -var bbox = d3.select("#" + this.get("parent-id")) - .node() - .getBoundingClientRect(); -this.canvas.w = bbox.width; -this.canvas.h = this.getCanvasHeight(); - -this.canvas.svg = d3.select("#" + this.get("parent-id")) - .append("svg") - .attr("width", this.canvas.w) - .attr("height", this.canvas.h) - .attr("id", this.get("my-id")); -this.renderTimeline(start, end); - }, - - renderTimeline: function(start, end) { -var border = 30; -var singleBarHeight = this.getPerItemHeight();
[49/50] [abbrv] hadoop git commit: YARN-4849. [YARN-3368] cleanup code base, integrate web UI related build to mvn, and fix licenses. (wangda)
YARN-4849. [YARN-3368] cleanup code base, integrate web UI related build to mvn, and fix licenses. (wangda) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/f38692cc Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/f38692cc Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/f38692cc Branch: refs/heads/YARN-3368 Commit: f38692ccdd89b318d67a72e2ed78c5868a6ec37d Parents: b59c131 Author: Wangda Tan Authored: Mon Mar 21 14:03:13 2016 -0700 Committer: Wangda Tan Committed: Thu Apr 28 11:01:08 2016 -0700 -- .gitignore | 13 + BUILDING.txt| 4 +- LICENSE.txt | 80 + dev-support/create-release.sh | 144 + dev-support/docker/Dockerfile | 5 + .../src/site/markdown/YarnUI2.md| 43 +++ .../hadoop-yarn/hadoop-yarn-ui/.bowerrc | 4 - .../hadoop-yarn/hadoop-yarn-ui/.editorconfig| 34 --- .../hadoop-yarn/hadoop-yarn-ui/.ember-cli | 11 - .../hadoop-yarn/hadoop-yarn-ui/.gitignore | 17 -- .../hadoop-yarn/hadoop-yarn-ui/.jshintrc| 32 -- .../hadoop-yarn/hadoop-yarn-ui/.travis.yml | 23 -- .../hadoop-yarn/hadoop-yarn-ui/.watchmanconfig | 3 - .../hadoop-yarn/hadoop-yarn-ui/README.md| 24 -- .../hadoop-yarn-ui/app/adapters/cluster-info.js | 20 -- .../app/adapters/cluster-metric.js | 20 -- .../app/adapters/yarn-app-attempt.js| 32 -- .../hadoop-yarn-ui/app/adapters/yarn-app.js | 26 -- .../app/adapters/yarn-container-log.js | 74 - .../app/adapters/yarn-container.js | 43 --- .../app/adapters/yarn-node-app.js | 63 .../app/adapters/yarn-node-container.js | 64 .../hadoop-yarn-ui/app/adapters/yarn-node.js| 40 --- .../hadoop-yarn-ui/app/adapters/yarn-queue.js | 20 -- .../hadoop-yarn-ui/app/adapters/yarn-rm-node.js | 45 --- .../hadoop-yarn/hadoop-yarn-ui/app/app.js | 20 -- .../hadoop-yarn-ui/app/components/.gitkeep | 0 .../app/components/app-attempt-table.js | 4 - .../hadoop-yarn-ui/app/components/app-table.js | 4 - .../hadoop-yarn-ui/app/components/bar-chart.js | 104 --- .../app/components/base-chart-component.js | 109 --- .../app/components/container-table.js | 4 - .../app/components/donut-chart.js | 148 -- .../app/components/item-selector.js | 21 -- .../app/components/queue-configuration-table.js | 4 - .../app/components/queue-navigator.js | 4 - .../hadoop-yarn-ui/app/components/queue-view.js | 272 - .../app/components/simple-table.js | 58 .../app/components/timeline-view.js | 250 .../app/components/tree-selector.js | 257 .../hadoop-yarn/hadoop-yarn-ui/app/config.js| 27 -- .../hadoop-yarn/hadoop-yarn-ui/app/constants.js | 24 -- .../hadoop-yarn-ui/app/controllers/.gitkeep | 0 .../app/controllers/application.js | 55 .../app/controllers/cluster-overview.js | 5 - .../hadoop-yarn-ui/app/controllers/yarn-apps.js | 4 - .../app/controllers/yarn-queue.js | 6 - .../hadoop-yarn-ui/app/helpers/.gitkeep | 0 .../hadoop-yarn-ui/app/helpers/divide.js| 31 -- .../app/helpers/log-files-comma.js | 48 --- .../hadoop-yarn-ui/app/helpers/node-link.js | 37 --- .../hadoop-yarn-ui/app/helpers/node-menu.js | 66 - .../hadoop-yarn/hadoop-yarn-ui/app/index.html | 25 -- .../hadoop-yarn-ui/app/models/.gitkeep | 0 .../hadoop-yarn-ui/app/models/cluster-info.js | 13 - .../hadoop-yarn-ui/app/models/cluster-metric.js | 115 .../app/models/yarn-app-attempt.js | 44 --- .../hadoop-yarn-ui/app/models/yarn-app.js | 65 - .../app/models/yarn-container-log.js| 25 -- .../hadoop-yarn-ui/app/models/yarn-container.js | 39 --- .../hadoop-yarn-ui/app/models/yarn-node-app.js | 44 --- .../app/models/yarn-node-container.js | 57 .../hadoop-yarn-ui/app/models/yarn-node.js | 33 --- .../hadoop-yarn-ui/app/models/yarn-queue.js | 76 - .../hadoop-yarn-ui/app/models/yarn-rm-node.js | 92 -- .../hadoop-yarn-ui/app/models/yarn-user.js | 8 - .../hadoop-yarn/hadoop-yarn-ui/app/router.js| 29 -- .../hadoop-yarn-ui/app/routes/.gitkeep | 0 .../hadoop-yarn-ui/app/routes/application.js| 38 --- .../app/routes/cluster-overview.js | 11 - .../hadoop-yarn-ui/app/routes/index.js | 29 -- .../app/routes/yarn-app-attempt.js | 21 -- .../hadoop-yarn-ui/app/routes/yarn-app.js | 10 - .../hadoop-yar
[49/50] [abbrv] hadoop git commit: YARN-4849. [YARN-3368] cleanup code base, integrate web UI related build to mvn, and fix licenses. (wangda)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/4bf84af8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/timeline-view.js -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/timeline-view.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/timeline-view.js deleted file mode 100644 index fe402bb..000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/timeline-view.js +++ /dev/null @@ -1,250 +0,0 @@ -import Ember from 'ember'; -import Converter from 'yarn-ui/utils/converter'; - -export default Ember.Component.extend({ - canvas: { -svg: undefined, -h: 0, -w: 0, -tooltip: undefined - }, - - clusterMetrics: undefined, - modelArr: [], - colors: d3.scale.category10().range(), - _selected: undefined, - - selected: function() { -return this._selected; - }.property(), - - tableComponentName: function() { -return "app-attempt-table"; - }.property(), - - setSelected: function(d) { -if (this._selected == d) { - return; -} - -// restore color -if (this._selected) { - var dom = d3.select("#timeline-bar-" + this._selected.get("id")); - dom.attr("fill", this.colors[0]); -} - -this._selected = d; -this.set("selected", d); -dom = d3.select("#timeline-bar-" + d.get("id")); -dom.attr("fill", this.colors[1]); - }, - - getPerItemHeight: function() { -var arrSize = this.modelArr.length; - -if (arrSize < 20) { - return 30; -} else if (arrSize < 100) { - return 10; -} else { - return 2; -} - }, - - getPerItemGap: function() { -var arrSize = this.modelArr.length; - -if (arrSize < 20) { - return 5; -} else if (arrSize < 100) { - return 1; -} else { - return 1; -} - }, - - getCanvasHeight: function() { -return (this.getPerItemHeight() + this.getPerItemGap()) * this.modelArr.length + 200; - }, - - draw: function(start, end) { -// get w/h of the svg -var bbox = d3.select("#" + this.get("parent-id")) - .node() - .getBoundingClientRect(); -this.canvas.w = bbox.width; -this.canvas.h = this.getCanvasHeight(); - -this.canvas.svg = d3.select("#" + this.get("parent-id")) - .append("svg") - .attr("width", this.canvas.w) - .attr("height", this.canvas.h) - .attr("id", this.get("my-id")); -this.renderTimeline(start, end); - }, - - renderTimeline: function(start, end) { -var border = 30; -var singleBarHeight = this.getPerItemHeight(); -var gap = this.getPerItemGap(); -var textWidth = 50; -/* - start-time end-time - |--| - == -== -== - === - */ -var xScaler = d3.scale.linear() - .domain([start, end]) - .range([0, this.canvas.w - 2 * border - textWidth]); - -/* - * Render frame of timeline view - */ -this.canvas.svg.append("line") - .attr("x1", border + textWidth) - .attr("y1", border - 5) - .attr("x2", this.canvas.w - border) - .attr("y2", border - 5) - .attr("class", "chart"); - -this.canvas.svg.append("line") - .attr("x1", border + textWidth) - .attr("y1", border - 10) - .attr("x2", border + textWidth) - .attr("y2", border - 5) - .attr("class", "chart"); - -this.canvas.svg.append("line") - .attr("x1", this.canvas.w - border) - .attr("y1", border - 10) - .attr("x2", this.canvas.w - border) - .attr("y2", border - 5) - .attr("class", "chart"); - -this.canvas.svg.append("text") -.text(Converter.timeStampToDate(start)) -.attr("y", border - 15) -.attr("x", border + textWidth) -.attr("class", "bar-chart-text") -.attr("text-anchor", "left"); - -this.canvas.svg.append("text") -.text(Converter.timeStampToDate(end)) -.attr("y", border - 15) -.attr("x", this.canvas.w - border) -.attr("class", "bar-chart-text") -.attr("text-anchor", "end"); - -// show bar -var bar = this.canvas.svg.selectAll("bars") - .data(this.modelArr) - .enter() - .append("rect") - .attr("y", function(d, i) { -return border + (gap + singleBarHeight) * i; - }) - .attr("x", function(d, i) { -return border + textWidth + xScaler(d.get("startTs")); - }) - .attr("height", singleBarHeight) - .attr("fill", function(d, i) { -return this.colors[0]; - }.bind(this)) - .attr("width", function(d, i) { -var finishedTs = xScaler(d.get("finishedTs")); -finishedTs = finishedTs > 0 ? finishedTs : xScaler(end); -return finishedTs - xScaler(d.get("startTs")); - }) - .attr("id", function(d, i) { -ret
[49/50] [abbrv] hadoop git commit: YARN-4849. [YARN-3368] cleanup code base, integrate web UI related build to mvn, and fix licenses. (wangda)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/e7ef482a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/timeline-view.js -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/timeline-view.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/timeline-view.js deleted file mode 100644 index fe402bb..000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/timeline-view.js +++ /dev/null @@ -1,250 +0,0 @@ -import Ember from 'ember'; -import Converter from 'yarn-ui/utils/converter'; - -export default Ember.Component.extend({ - canvas: { -svg: undefined, -h: 0, -w: 0, -tooltip: undefined - }, - - clusterMetrics: undefined, - modelArr: [], - colors: d3.scale.category10().range(), - _selected: undefined, - - selected: function() { -return this._selected; - }.property(), - - tableComponentName: function() { -return "app-attempt-table"; - }.property(), - - setSelected: function(d) { -if (this._selected == d) { - return; -} - -// restore color -if (this._selected) { - var dom = d3.select("#timeline-bar-" + this._selected.get("id")); - dom.attr("fill", this.colors[0]); -} - -this._selected = d; -this.set("selected", d); -dom = d3.select("#timeline-bar-" + d.get("id")); -dom.attr("fill", this.colors[1]); - }, - - getPerItemHeight: function() { -var arrSize = this.modelArr.length; - -if (arrSize < 20) { - return 30; -} else if (arrSize < 100) { - return 10; -} else { - return 2; -} - }, - - getPerItemGap: function() { -var arrSize = this.modelArr.length; - -if (arrSize < 20) { - return 5; -} else if (arrSize < 100) { - return 1; -} else { - return 1; -} - }, - - getCanvasHeight: function() { -return (this.getPerItemHeight() + this.getPerItemGap()) * this.modelArr.length + 200; - }, - - draw: function(start, end) { -// get w/h of the svg -var bbox = d3.select("#" + this.get("parent-id")) - .node() - .getBoundingClientRect(); -this.canvas.w = bbox.width; -this.canvas.h = this.getCanvasHeight(); - -this.canvas.svg = d3.select("#" + this.get("parent-id")) - .append("svg") - .attr("width", this.canvas.w) - .attr("height", this.canvas.h) - .attr("id", this.get("my-id")); -this.renderTimeline(start, end); - }, - - renderTimeline: function(start, end) { -var border = 30; -var singleBarHeight = this.getPerItemHeight(); -var gap = this.getPerItemGap(); -var textWidth = 50; -/* - start-time end-time - |--| - == -== -== - === - */ -var xScaler = d3.scale.linear() - .domain([start, end]) - .range([0, this.canvas.w - 2 * border - textWidth]); - -/* - * Render frame of timeline view - */ -this.canvas.svg.append("line") - .attr("x1", border + textWidth) - .attr("y1", border - 5) - .attr("x2", this.canvas.w - border) - .attr("y2", border - 5) - .attr("class", "chart"); - -this.canvas.svg.append("line") - .attr("x1", border + textWidth) - .attr("y1", border - 10) - .attr("x2", border + textWidth) - .attr("y2", border - 5) - .attr("class", "chart"); - -this.canvas.svg.append("line") - .attr("x1", this.canvas.w - border) - .attr("y1", border - 10) - .attr("x2", this.canvas.w - border) - .attr("y2", border - 5) - .attr("class", "chart"); - -this.canvas.svg.append("text") -.text(Converter.timeStampToDate(start)) -.attr("y", border - 15) -.attr("x", border + textWidth) -.attr("class", "bar-chart-text") -.attr("text-anchor", "left"); - -this.canvas.svg.append("text") -.text(Converter.timeStampToDate(end)) -.attr("y", border - 15) -.attr("x", this.canvas.w - border) -.attr("class", "bar-chart-text") -.attr("text-anchor", "end"); - -// show bar -var bar = this.canvas.svg.selectAll("bars") - .data(this.modelArr) - .enter() - .append("rect") - .attr("y", function(d, i) { -return border + (gap + singleBarHeight) * i; - }) - .attr("x", function(d, i) { -return border + textWidth + xScaler(d.get("startTs")); - }) - .attr("height", singleBarHeight) - .attr("fill", function(d, i) { -return this.colors[0]; - }.bind(this)) - .attr("width", function(d, i) { -var finishedTs = xScaler(d.get("finishedTs")); -finishedTs = finishedTs > 0 ? finishedTs : xScaler(end); -return finishedTs - xScaler(d.get("startTs")); - }) - .attr("id", function(d, i) { -ret