|
(function ($) { |
|
angular.module('designer').requires.push('expander', 'sfSelectors'); |
|
|
|
angular.module('designer').controller('SimpleCtrl', ['$scope', 'propertyService', function ($scope, propertyService) { |
|
var sortOptions = ['PublicationDate DESC', 'LastModified DESC', 'Title ASC', 'Title DESC', 'AsSetManually']; |
|
var emptyGuid = '00000000-0000-0000-0000-000000000000'; |
|
|
|
$scope.feedback.showLoadingIndicator = true; |
|
$scope.additionalFilters = {}; |
|
$scope.newsSelector = { selectedItemsIds: [] }; |
|
|
|
$scope.$watch( |
|
'additionalFilters.value', |
|
function (newAdditionalFilters, oldAdditionalFilters) { |
|
if (newAdditionalFilters !== oldAdditionalFilters) { |
|
$scope.properties.SerializedAdditionalFilters.PropertyValue = JSON.stringify(newAdditionalFilters); |
|
} |
|
}, |
|
true |
|
); |
|
|
|
$scope.$watch( |
|
'properties.ProviderName.PropertyValue', |
|
function (newProviderName, oldProviderName) { |
|
if (newProviderName !== oldProviderName) { |
|
$scope.properties.SelectionMode.PropertyValue = 'AllItems'; |
|
$scope.properties.SerializedSelectedItemsIds.PropertyValue = null; |
|
} |
|
}, |
|
true |
|
); |
|
|
|
$scope.$watch( |
|
'newsSelector.selectedItemsIds', |
|
function (newSelectedItemsIds, oldSelectedItemsIds) { |
|
if (newSelectedItemsIds !== oldSelectedItemsIds) { |
|
if (newSelectedItemsIds) { |
|
$scope.properties.SerializedSelectedItemsIds.PropertyValue = JSON.stringify(newSelectedItemsIds); |
|
} |
|
} |
|
}, |
|
true |
|
); |
|
|
|
$scope.updateSortOption = function (newSortOption) { |
|
if (newSortOption !== "Custom") { |
|
$scope.properties.SortExpression.PropertyValue = newSortOption; |
|
} |
|
}; |
|
|
|
propertyService.get() |
|
.then(function (data) { |
|
if (data) { |
|
$scope.properties = propertyService.toAssociativeArray(data.Items); |
|
|
|
var additionalFilters = $.parseJSON($scope.properties.SerializedAdditionalFilters.PropertyValue || null); |
|
|
|
$scope.additionalFilters.value = additionalFilters; |
|
|
|
var selectedItemsIds = $.parseJSON($scope.properties.SerializedSelectedItemsIds.PropertyValue || null); |
|
|
|
if (selectedItemsIds) { |
|
$scope.newsSelector.selectedItemsIds = selectedItemsIds; |
|
} |
|
|
|
if (sortOptions.indexOf($scope.properties.SortExpression.PropertyValue) >= 0) { |
|
$scope.selectedSortOption = $scope.properties.SortExpression.PropertyValue; |
|
} |
|
else { |
|
$scope.selectedSortOption = "Custom"; |
|
} |
|
} |
|
}, |
|
function (data) { |
|
$scope.feedback.showError = true; |
|
if (data) |
|
$scope.feedback.errorMessage = data.Detail; |
|
}) |
|
.then(function () { |
|
$scope.feedback.savingHandlers.push(function () { |
|
if ($scope.properties.OpenInSamePage.PropertyValue && $scope.properties.OpenInSamePage.PropertyValue.toLowerCase() === 'true') { |
|
$scope.properties.DetailsPageId.PropertyValue = emptyGuid; |
|
} |
|
else { |
|
if (!$scope.properties.DetailsPageId.PropertyValue || |
|
$scope.properties.DetailsPageId.PropertyValue === emptyGuid) { |
|
$scope.properties.OpenInSamePage.PropertyValue = true; |
|
} |
|
} |
|
|
|
if ($scope.properties.SelectionMode.PropertyValue === "FilteredItems" && |
|
$scope.additionalFilters.value && |
|
$scope.additionalFilters.value.QueryItems && |
|
$scope.additionalFilters.value.QueryItems.length === 0) { |
|
$scope.properties.SelectionMode.PropertyValue = 'AllItems'; |
|
} |
|
|
|
if ($scope.properties.SelectionMode.PropertyValue !== "FilteredItems") { |
|
$scope.properties.SerializedAdditionalFilters.PropertyValue = null; |
|
} |
|
|
|
if ($scope.properties.SelectionMode.PropertyValue !== 'SelectedItems') { |
|
$scope.properties.SerializedSelectedItemsIds.PropertyValue = null; |
|
|
|
// If the sorting expression is AsSetManually but the selection mode is AllItems or FilteredItems, this is not a valid combination. |
|
// So set the sort expression to the default value: PublicationDate DESC |
|
if ($scope.properties.SortExpression.PropertyValue === "AsSetManually") { |
|
$scope.properties.SortExpression.PropertyValue = "PublicationDate DESC"; |
|
} |
|
} |
|
}); |
|
}) |
|
.finally(function () { |
|
$scope.feedback.showLoadingIndicator = false; |
|
}); |
|
}]); |
|
})(jQuery); |