blob: 85335eef566366a7284f6f0e405176b26ac29903 [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/site/DownloadSearchResultLayoutView_tmpl',
'utils/Utils',
'utils/UrlLinks',
'utils/Globals',
'collection/VDownloadList'
], function(require, Backbone, DownloadSearchResultLayoutViewTmpl, Utils, UrlLinks, Globals, VDownloadList) {
'use strict';
var DownloadSearchResultLayoutView = Backbone.Marionette.LayoutView.extend(
/** @lends SearchLayoutView */
{
_viewName: 'DownloadSearchResultLayoutView',
template: DownloadSearchResultLayoutViewTmpl,
/** Layout sub regions */
regions: {},
/** ui selector cache */
ui: {
downloadsPanel: ".downloads-panel",
closeDownloadsButton: "[data-id='closeDownloads']",
downloadListContainer: "[data-id='downloadListContainer']",
downloadTitle: "[data-id='downloadtitle']",
refreshDownloadsButton: "[data-id='refreshDownloads']",
loader: "[data-id='downloadListLoader']",
toggleDownloads: "[data-id='toggleDownloads']"
},
/** ui events hash */
events: function() {
var events = {},
that = this;
events['click ' + this.ui.closeDownloadsButton] = "onHideDownloads";
events['click ' + this.ui.refreshDownloadsButton] = "onRefreshDownloads";
events['change ' + this.ui.toggleDownloads] = function(e) {
this.showCompletedDownloads = !this.showCompletedDownloads;
if(this.showCompletedDownloads){
this.ui.toggleDownloads.attr("data-original-title", "Display All Files");
} else {
this.ui.toggleDownloads.attr("data-original-title", "Display Available Files");
}
this.genrateDownloadList();
}
return events;
},
/**
* intialize a new DownloadSearchResultLayoutView Layout
* @constructs
*/
initialize: function(options) {
this.options = options;
this.showDownloads = new VDownloadList();
this.showCompletedDownloads = true;
this.downloadsData = [];
this.bindEvents();
},
bindEvents: function() {
this.listenTo(this.options.exportVent, "downloads:showDownloads", function() {
this.onShowDownloads();
});
},
onRender: function() {
this.ui.toggleDownloads.attr("data-original-title", "Display All Files");
},
initializeValues: function() {},
fetchDownloadsData: function() {
var that = this;
var apiObj = {
success: function(data, response) {
that.downloadsData = data.searchDownloadRecords;
that.genrateDownloadList();
},
complete: function() {
that.hideLoader();
},
reset: true
}
this.showDownloads.getDownloadsList(apiObj);
},
genrateDownloadList: function() {
var that = this,
stateIconEl = "",
completedDownloads = "",
allDownloads = "",
downloadList = "",
sortedData = _.sortBy(this.downloadsData, function(obj){
return obj.createdTime;
}).reverse();
if (sortedData.length) {
_.each(sortedData, function(obj) {
if (obj.status === "PENDING") {
stateIconEl = "<span class='download-state'><i class='fa fa-refresh fa-spin-custom' aria-hidden='true'></i></span>";
} else {
stateIconEl = "<span class='download-state'><a href=" + UrlLinks.downloadSearchResultsFileUrl(obj.fileName) + "><i class='fa fa-arrow-circle-o-down fa-lg' aria-hidden='true'></i></a></span>";
completedDownloads += "<li><i class='fa fa-file-excel-o fa-lg' aria-hidden='true'></i><span class='file-name'>" + obj.fileName + "</span>" + stateIconEl + "</li>"
}
allDownloads += "<li><i class='fa fa-file-excel-o fa-lg' aria-hidden='true'></i><span class='file-name'>" + obj.fileName + "</span>" + stateIconEl + "</li>";
});
} else {
completedDownloads = allDownloads = "<li class='text-center' style='border-bottom:none'>No Data Found</li>"
}
if (this.downloadsData.length && completedDownloads === "") {
completedDownloads = "<li class='text-center' style='border-bottom:none'>No Data Found</li>";
}
downloadList = this.showCompletedDownloads ? completedDownloads : allDownloads;
this.ui.downloadListContainer.empty();
this.ui.downloadListContainer.html(downloadList);
},
onRefreshDownloads: function() {
var that = this;
Utils.disableRefreshButton(this.ui.refreshDownloadsButton, this);
this.showLoader();
that.fetchDownloadsData();
},
onShowDownloads: function() {
this.fetchDownloadsData();
this.showLoader();
this.ui.downloadsPanel.css("right", "20px");
},
onHideDownloads: function() {
this.ui.downloadsPanel.css("right", "-400px")
},
showLoader: function() {
this.$('.downloadListLoader').show();
this.$('.downloadListOverlay').show();
},
hideLoader: function(options) {
this.$('.downloadListLoader').hide();
this.$('.downloadListOverlay').hide();
}
});
return DownloadSearchResultLayoutView;
});