Gets mini list view working so that only nodes with children show the arrow, added GetPagedChildren to EntityController

This commit is contained in:
Shannon
2017-02-15 17:40:10 +11:00
parent 5807bbccc4
commit 8387c435d4
9 changed files with 262 additions and 42 deletions

View File

@@ -1,7 +1,7 @@
(function () {
'use strict';
function MiniListViewDirective(contentResource, memberResource, mediaResource) {
function MiniListViewDirective(entityResource) {
function link(scope, el, attr, ctrl) {
@@ -52,22 +52,17 @@
// start loading animation list view
miniListView.loading = true;
// setup the correct resource depending on section
var resource = "";
if (scope.entityType === "Member") {
resource = memberResource.getPagedResults;
} else if (scope.entityType === "Media") {
resource = mediaResource.getChildren;
} else {
resource = contentResource.getChildren;
}
resource(miniListView.node.id, miniListView.pagination)
entityResource.getPagedChildren(miniListView.node.id, scope.entityType, miniListView.pagination)
.then(function (data) {
// update children
miniListView.children = data.items;
_.each(miniListView.children, function(c) {
if (c.metaData) {
c.hasChildren = c.metaData.HasChildren;
c.published = c.metaData.IsPublished;
}
});
// update pagination
miniListView.pagination.totalItems = data.totalItems;
miniListView.pagination.totalPages = data.totalPages;

View File

@@ -477,20 +477,20 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
}
return umbRequestHelper.resourcePromise(
$http.get(
umbRequestHelper.getApiUrl(
"contentApiBaseUrl",
"GetChildren",
[
{ id: parentId },
{ pageNumber: options.pageNumber },
{ pageSize: options.pageSize },
{ orderBy: options.orderBy },
{ orderDirection: options.orderDirection },
{ orderBySystemField: toBool(options.orderBySystemField) },
{ filter: options.filter }
])),
'Failed to retrieve children for content item ' + parentId);
$http.get(
umbRequestHelper.getApiUrl(
"contentApiBaseUrl",
"GetChildren",
{
id: parentId,
pageNumber: options.pageNumber,
pageSize: options.pageSize,
orderBy: options.orderBy,
orderDirection: options.orderDirection,
orderBySystemField: toBool(options.orderBySystemField),
filter: options.filter
})),
'Failed to retrieve children for content item ' + parentId);
},
/**

View File

@@ -38,6 +38,10 @@ function entityResource($q, $http, umbRequestHelper) {
getSafeAlias: function (value, camelCase) {
if (!value) {
return "";
}
return umbRequestHelper.resourcePromise(
$http.get(
umbRequestHelper.getApiUrl(
@@ -68,6 +72,11 @@ function entityResource($q, $http, umbRequestHelper) {
*
*/
getPath: function (id, type) {
if (id === -1 || id === "-1") {
return "-1";
}
return umbRequestHelper.resourcePromise(
$http.get(
umbRequestHelper.getApiUrl(
@@ -98,7 +107,12 @@ function entityResource($q, $http, umbRequestHelper) {
* @returns {Promise} resourcePromise object containing the url.
*
*/
getUrl: function(id, type) {
getUrl: function (id, type) {
if (id === -1 || id === "-1") {
return "";
}
return umbRequestHelper.resourcePromise(
$http.get(
umbRequestHelper.getApiUrl(
@@ -131,7 +145,12 @@ function entityResource($q, $http, umbRequestHelper) {
* @returns {Promise} resourcePromise object containing the entity.
*
*/
getById: function (id, type) {
getById: function (id, type) {
if (id === -1 || id === "-1") {
return null;
}
return umbRequestHelper.resourcePromise(
$http.get(
umbRequestHelper.getApiUrl(
@@ -292,18 +311,19 @@ function entityResource($q, $http, umbRequestHelper) {
/**
* @ngdoc method
* @name umbraco.resources.entityResource#getAncestors
* @name umbraco.resources.entityResource#getChildren
* @methodOf umbraco.resources.entityResource
*
* @description
* Gets children entities for a given item
*
*
* @param {Int} parentid id of content item to return children of
* @param {string} type Object type name
* @returns {Promise} resourcePromise object containing the entity.
*
*/
getChildren: function (id, type) {
return umbRequestHelper.resourcePromise(
$http.get(
umbRequestHelper.getApiUrl(
@@ -312,6 +332,76 @@ function entityResource($q, $http, umbRequestHelper) {
[{ id: id }, { type: type }])),
'Failed to retrieve child data for id ' + id);
},
/**
* @ngdoc method
* @name umbraco.resources.entityResource#getPagedChildren
* @methodOf umbraco.resources.entityResource
*
* @description
* Gets paged children of a content item with a given id
*
* ##usage
* <pre>
* entityResource.getPagedChildren(1234, "Content", {pageSize: 10, pageNumber: 2})
* .then(function(contentArray) {
* var children = contentArray;
* alert('they are here!');
* });
* </pre>
*
* @param {Int} parentid id of content item to return children of
* @param {string} type Object type name
* @param {Object} options optional options object
* @param {Int} options.pageSize if paging data, number of nodes per page, default = 0
* @param {Int} options.pageNumber if paging data, current page index, default = 0
* @param {String} options.filter if provided, query will only return those with names matching the filter
* @param {String} options.orderDirection can be `Ascending` or `Descending` - Default: `Ascending`
* @param {String} options.orderBy property to order items by, default: `SortOrder`
* @returns {Promise} resourcePromise object containing an array of content items.
*
*/
getPagedChildren: function (parentId, type, options) {
var defaults = {
pageSize: 0,
pageNumber: 0,
filter: '',
orderDirection: "Ascending",
orderBy: "SortOrder"
};
if (options === undefined) {
options = {};
}
//overwrite the defaults if there are any specified
angular.extend(defaults, options);
//now copy back to the options we will use
options = defaults;
//change asc/desct
if (options.orderDirection === "asc") {
options.orderDirection = "Ascending";
}
else if (options.orderDirection === "desc") {
options.orderDirection = "Descending";
}
return umbRequestHelper.resourcePromise(
$http.get(
umbRequestHelper.getApiUrl(
"entityApiBaseUrl",
"GetPagedChildren",
{
id: parentId,
type: type,
pageNumber: options.pageNumber,
pageSize: options.pageSize,
orderBy: options.orderBy,
orderDirection: options.orderDirection,
filter: options.filter
}
)),
'Failed to retrieve child data for id ' + parentId);
},
/**
* @ngdoc method

View File

@@ -72,7 +72,7 @@ angular.module("umbraco").controller("Umbraco.Overlays.TreePickerController",
$scope.enableSearh = true;
//if a alternative startnode is used, we need to check if it is a container
if (dialogOptions.startNodeId && dialogOptions.startNodeId !== -1) {
if (dialogOptions.startNodeId && dialogOptions.startNodeId !== -1 && dialogOptions.startNodeId !== "-1") {
entityResource.getById(dialogOptions.startNodeId, $scope.entityType).then(function (node) {
if (node.metaData.IsContainer) {
openMiniListView(node);

View File

@@ -62,14 +62,14 @@
ng-repeat="child in miniListView.children"
ng-click="selectNode(child)"
ng-class="{'-selected':child.selected}">
<div class="umb-table-cell umb-table-cell--auto-width" ng-class="{'umb-table-cell--faded':!child.published && entityType === 'Document'}">
<div class="umb-table-cell umb-table-cell--auto-width" ng-class="{'umb-table-cell--faded':child.published === false}">
<div class="flex items-center">
<ins class="icon-navigation-right umb-table__row-expand" ng-click="openNode($event, child)">&nbsp;</ins>
<ins class="icon-navigation-right umb-table__row-expand" ng-click="openNode($event, child)" ng-if="child.hasChildren === true">&nbsp;</ins>
<i class="umb-table-body__icon umb-table-body__fileicon {{child.icon}}"></i>
<i class="umb-table-body__icon umb-table-body__checkicon icon-check"></i>
</div>
</div>
<div class="umb-table-cell black" ng-class="{'umb-table-cell--faded':!child.published && entityType === 'Document'}">{{ child.name }}</div>
<div class="umb-table-cell black" ng-class="{'umb-table-cell--faded':child.published === false}">{{ child.name }}</div>
</div>
<!-- Load indicator when the list doesn't have items -->