dashboardv3/public/js/views/detail_page/PendingTaskTableLayoutView.js (184 lines of code) (raw):

/** * 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; });