Files
LeafWeb/WebCms/App_Plugins/MemberManager/backoffice/dialogs/member/export.controller.js
T
2022-10-24 11:17:36 -04:00

116 lines
3.9 KiB
JavaScript

angular.module("umbraco").controller("MemberManager.Dialogs.Member.ExportController",
function ($scope, memberExtResource) {
$scope.defaultButton = null;
$scope.subButtons = [];
var dialogOptions = $scope.$parent.dialogOptions;
$scope.filterData = dialogOptions.filterData;
$scope.columns = dialogOptions.columns;
//$scope.memberType = dialogOptions.filterData.memberType;
$scope.totalItems = dialogOptions.totalItems;
$scope.memberTypes = dialogOptions.memberTypes;
$scope.format = "Excel";
$scope.allColumnsSelected = false;
function init() {
var buttons = {
defaultButton: createButtonDefinition("E"),
subButtons: []
};
$scope.defaultButton = buttons.defaultButton;
$scope.subButtons = buttons.subButtons;
memberExtResource.getMemberColumns(dialogOptions.filterData.memberType).then(function (data) {
// We use this to preserve the original filter data.
$scope.columnList = setSelected(data, $scope.columns);
$scope.allColumnsSelected = $scope.allSelected($scope.columnList);
});
}
function createButtonDefinition(ch) {
switch (ch) {
case "E":
//export action
return {
letter: ch,
labelKey: "memberManager_export",
label: "Export",
handler: $scope.export,
hotKey: "ctrl+e",
hotKeyWhenHidden: true,
alias: "export"
};
default:
return null;
}
}
// Loop through a list of select options and set selected for values that appear in a filter list
setSelected = function (list, filter) {
// Convert string arrays to a select item object.
list = _.map(list, function (item) {
if (typeof item === "string") {
let value = item;
item = {
id: value.replace(" ", "_"),
name: value,
alias: value,
selected: false
};
}
return item;
});
if (filter) {
for (var i = 0; i < filter.length; i++) {
for (var j = 0; j < list.length; j++) {
if (list[j].id === filter[i].replace(" ", "_")) {
list[j].selected = true;
}
}
}
}
return list;
};
processColumnList = function (list) {
var filteredList = _.filter(list, function (i) {
return i.selected;
});
return _.map(filteredList, function (item) {
return item.alias;
});
};
// Methods to manage select/deselect all in checkbox lists.
$scope.selectAll = function (selectionList) {
_.each(selectionList, function (item) { item.selected = $scope.allColumnsSelected; });
};
$scope.allSelected = function (selectionList) {
return _.filter(selectionList, function (item) { return item.selected; }).length === selectionList.length;
};
$scope.export = function () {
$scope.submit(processColumnList($scope.columnList));
};
// this method is called for all action buttons and then we proxy based on the btn definition
$scope.performAction = function (btn) {
if (!btn || !angular.isFunction(btn.handler)) {
throw "btn.handler must be a function reference";
}
btn.handler.apply(this);
};
init();
});