blob: 0e32ebe7a34062f1e525daccc6ddda59705035f0 [file] [log] [blame]
/**
* 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.
*/
define(['require',
'backbone',
'hbs!tmpl/detail_page/PendingTaskTableLayoutView_tmpl',
'collection/VEntityList',
'utils/Utils',
'utils/Enums',
'utils/UrlLinks',
'utils/CommonViewFunction'
], function(require, Backbone, PendingTaskTableLayoutView_tmpl, VEntityList, Utils, Enums, UrlLinks, CommonViewFunction) {
'use strict';
var PendingTaskTableLayoutView = Backbone.Marionette.LayoutView.extend(
/** @lends PendingTaskTableLayoutView */
{
_viewName: 'PendingTaskTableLayoutView',
template: PendingTaskTableLayoutView_tmpl,
/** Layout sub regions */
regions: {
RPendingTaskTableLayoutView: "#r_pendingTaskTableLayoutView",
},
/** ui selector cache */
ui: {
refreshPendingTask: "[data-id='refreshPendingTask']"
},
/** ui events hash */
events: function() {
var events = {};
events["click " + this.ui.refreshPendingTask] = function(e) {
this.fetchPendingTaskCollection();
};
return events;
},
/**
* intialize a new PendingTaskTableLayoutView Layout
* @constructs
*/
initialize: function(options) {
_.extend(this, _.pick(options, 'guid', 'entity', 'entityName', 'attributeDefs'));
this.pendingTaskCollection = new VEntityList();
this.limit = 25;
this.offset = 0;
this.pendingTaskCollection.url = UrlLinks.pendingTaskApiUrl();
this.entityModel = new this.pendingTaskCollection.model();
this.pervOld = [];
this.commonTableOptions = {
collection: this.pendingTaskCollection,
includeFilter: false,
includePagination: false,
includeAtlasPagination: true,
includeAtlasPageSize: true,
includeTableLoader: true,
includeAtlasTableSorting: false,
showDefaultTableSorted: false,
columnSorting: false,
includeFooterRecords: false,
gridOpts: {
className: "table table-hover backgrid table-quickMenu",
emptyText: 'No records found!'
},
isApiSorting: false,
atlasPaginationOpts: this.getPaginationOptions(),
filterOpts: {},
paginatorOpts: {}
};
this.currPage = 1;
this.fromSort = false;
},
onRender: function() {
this.fetchPendingTaskCollection();
},
fetchPendingTaskCollection: function() {
this.commonTableOptions['atlasPaginationOpts'] = this.getPaginationOptions();
this.fetchCollection();
this.pendingTaskCollection.comparator = function(model) {
return -model.get('createdBy');
}
},
bindEvents: function() {},
getPaginationOptions: function() {
return {
count: this.getPageCount(),
offset: this.pendingTaskCollection.queryParams.offset || this.offset,
fetchCollection: this.fetchCollection.bind(this)
};
},
getPageCount: function() {
return (this.pendingTaskCollection.queryParams.limit || this.pendingTaskCollection.queryParams.count) || this.limit;
},
fetchCollection: function(options) {
var that = this;
this.pendingTaskCollection.fetch({
success: function(dataOrCollection, response) {
that.pendingTaskCollection.state.pageSize = that.getPageCount();
that.pendingTaskCollection.fullCollection.reset(response);
},
complete: function() {
that.$('.fontLoader').hide();
that.$('.tableOverlay').hide();
that.$('.auditTable').show();
that.renderTableLayoutView();
},
silent: true
});
},
renderTableLayoutView: function() {
var that = this;
require(['utils/TableLayout'], function(TableLayout) {
var cols = new Backgrid.Columns(that.getAuditTableColumns());
that.RPendingTaskTableLayoutView.show(new TableLayout(_.extend({}, that.commonTableOptions, {
columns: cols
})));
});
},
getAuditTableColumns: function() {
var that = this;
return this.pendingTaskCollection.constructor.getTableCols({
tool: {
label: "",
cell: "html",
editable: false,
sortable: false,
fixWidth: "20",
cell: Backgrid.ExpandableCell,
accordion: false,
expand: function(el, model) {
el.attr('colspan', '8');
var count = model.get('attemptCount'),
parameters = _.omit(_.extend(model.get('parameters'), { 'attemptCount': model.get('attemptCount'), 'createdBy': model.get('createdBy') }),"entityGuid"),
memoryTable = CommonViewFunction.propertyTable({
scope: this,
formatStringVal: false,
valueObject: parameters
}),
tableData = ' <div class="col-sm-12"> <div class="card-container panel panel-default custom-panel">' +
'<div class="panel-heading">Parameters</div> <div class="panel-body">' +
'<table class="table stat-table task-details">' +
'<tbody data-id="memory-card">' +
memoryTable +
'</tbody>' +
'</table> </div> </div> </div>';
$(el).append($('<div>').html(tableData));
}
},
type: {
label: "Type",
cell: "html",
sortable: false,
editable: false,
formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
fromRaw: function(rawValue, model) {
return Enums.auditAction[model.get('type')] || rawValue;
}
})
},
guid: {
label: "Guid",
cell: "html",
sortable: false,
editable: false
},
status: {
label: "Status",
cell: "html",
sortable: false,
editable: false
},
createdTime: {
label: "Created Time",
cell: "html",
editable: false,
sortable: false,
formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
fromRaw: function(rawValue, model) {
return Utils.formatDate({ date: rawValue });
}
})
},
updatedTime: {
label: "Updated Time",
cell: "html",
editable: false,
sortable: false,
formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
fromRaw: function(rawValue, model) {
return Utils.formatDate({ date: rawValue });
}
})
}
}, this.pendingTaskCollection);
}
});
return PendingTaskTableLayoutView;
});