123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- define([ "require", "backbone", "hbs!tmpl/profile/ProfileColumnLayoutView_tmpl", "views/graph/ProfileBarChart", "collection/VProfileList", "utils/Utils", "utils/Messages", "utils/Globals", "moment", "models/VEntity", "d3" ], function(require, Backbone, ProfileColumnLayoutViewTmpl, ProfileBarChart, VProfileList, Utils, Messages, Globals, moment, VEntity, d3) {
- "use strict";
- var ProfileColumnLayoutView = Backbone.Marionette.LayoutView.extend({
- _viewName: "ProfileColumnLayoutView",
- template: ProfileColumnLayoutViewTmpl,
- regions: {},
- templateHelpers: function() {
- return {
- profileData: this.profileData.attributes ? this.profileData.attributes : this.profileData,
- entityDetail: this.entityDetail,
- typeObject: this.typeObject
- };
- },
- ui: {
- backToYear: '[data-id="backToYear"]'
- },
- events: function() {
- var events = {};
- return events["click " + this.ui.backToYear] = "backToYear", events;
- },
- initialize: function(options) {
- _.extend(this, _.pick(options, "profileData", "guid", "entityDetail")), this.typeObject = Utils.getProfileTabType(this.profileData.attributes),
- this.entityModel = new VEntity(), this.formatValue = d3.format(".0s");
- },
- fetchEntity: function(argument) {
- var that = this;
- this.entityModel.getEntity(this.entityDetail.table.guid, {
- success: function(data) {
- var entity = data.entity, profileData = entity && entity.attributes && entity.attributes.profileData ? entity.attributes.profileData.attributes : null;
- profileData && profileData.rowCount && (that.$(".rowValue").show(), that.$(".rowValue .graphval").html("<b>" + that.formatValue(profileData.rowCount).replace("G", "B") + "</b>")),
- entity.attributes && (entity.guid && that.$(".table_name .graphval").html('<b><a href="#!/detailPage/' + entity.guid + '?profile=true">' + Utils.getName(entity) + "</a></b>"),
- that.$(".table_created .graphval").html("<b>" + moment(entity.attributes.createTime).format("LL") + "</b>"));
- }
- });
- },
- bindEvents: function() {},
- onRender: function() {
- this.fetchEntity(), this.typeObject && "date" === this.typeObject.type && this.$("svg").addClass("dateType");
- },
- onShow: function() {
- this.renderGraph();
- },
- renderGraph: function(argument) {
- if (this.typeObject) {
- this.profileData.attributes;
- this.data = {
- key: this.typeObject.label,
- values: this.typeObject.actualObj || []
- }, this.updateGraph(this.data);
- }
- },
- backToYear: function() {
- this.ui.backToYear.hide(), this.$(".profileGraphDetail").show(), this.monthsData = null,
- this.updateGraph(this.data);
- },
- createMonthData: function(data) {
- var monthsKey = {
- 1: "Jan",
- 2: "Feb",
- 3: "Mar",
- 4: "Apr",
- 5: "May",
- 6: "Jun",
- 7: "Jul",
- 8: "Aug",
- 9: "Sep",
- 10: "Oct",
- 11: "Nov",
- 12: "Dec"
- }, i = 1;
- for (this.monthsData = {
- key: this.typeObject.label,
- values: []
- }; i <= 12; ) this.monthsData.values.push({
- value: monthsKey[i],
- count: data[i] || 0
- }), i++;
- this.ui.backToYear.show(), this.$(".profileGraphDetail").hide(), this.updateGraph(this.monthsData);
- },
- updateGraph: function(data) {
- var that = this;
- this.$("svg").empty(), ProfileBarChart.render({
- el: this.$("svg")[0],
- data: data,
- xAxisLabel: this.typeObject.xAxisLabel,
- yAxisLabel: this.typeObject.yAxisLabel,
- formatValue: this.formatValue,
- rotateXticks: "date" !== this.typeObject.type,
- onBarClick: function(e) {
- "date" === that.typeObject.type && (that.monthsData || that.createMonthData(e.monthlyCounts));
- }
- });
- }
- });
- return ProfileColumnLayoutView;
- });
|