From 2ddbca8861ff43fca859145be31917fef35f0020 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20Riis-Knudsen?= Date: Wed, 3 Aug 2016 22:07:06 +0200 Subject: [PATCH] U4-8749: Add a service to allow acces to prevalues from inline listview editor --- .../umblistviewsettings.directive.js | 3 +- .../listviewprevaluehelper.service.js | 61 +++++++++++++++++++ .../listview/sortby.prevalues.controller.js | 16 ++++- 3 files changed, 76 insertions(+), 4 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/common/services/listviewprevaluehelper.service.js diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/umblistviewsettings.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/umblistviewsettings.directive.js index ae9da02237..f21f7b8d3d 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/umblistviewsettings.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/umblistviewsettings.directive.js @@ -1,7 +1,7 @@ (function() { 'use strict'; - function ListViewSettingsDirective(contentTypeResource, dataTypeResource, dataTypeHelper) { + function ListViewSettingsDirective(contentTypeResource, dataTypeResource, dataTypeHelper, listViewPrevalueHelper) { function link(scope, el, attr, ctrl) { @@ -20,6 +20,7 @@ scope.dataType = dataType; + listViewPrevalueHelper.setPrevalues(dataType.preValues); scope.customListViewCreated = checkForCustomListView(); }); diff --git a/src/Umbraco.Web.UI.Client/src/common/services/listviewprevaluehelper.service.js b/src/Umbraco.Web.UI.Client/src/common/services/listviewprevaluehelper.service.js new file mode 100644 index 0000000000..70bba2d26a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/common/services/listviewprevaluehelper.service.js @@ -0,0 +1,61 @@ +/** + @ngdoc service + * @name umbraco.services.listViewPrevalueHelper + * + * + * @description + * Service for accessing the prevalues of a list view being edited in the inline list view editor in the doctype editor + */ +(function () { + 'use strict'; + + function listViewPrevalueHelper() { + + var prevalues = []; + + /** + * @ngdoc method + * @name umbraco.services.listViewPrevalueHelper#getPrevalues + * @methodOf umbraco.services.listViewPrevalueHelper + * + * @description + * Set the collection of prevalues + */ + + function getPrevalues() { + return prevalues; + } + + /** + * @ngdoc method + * @name umbraco.services.listViewPrevalueHelper#setPrevalues + * @methodOf umbraco.services.listViewPrevalueHelper + * + * @description + * Changes the current layout used by the listview to the layout passed in. Stores selection in localstorage + * + * @param {Array} values Array of prevalues + */ + + function setPrevalues(values) { + prevalues = values; + } + + + + var service = { + + getPrevalues: getPrevalues, + setPrevalues: setPrevalues + + }; + + return service; + + } + + + angular.module('umbraco.services').factory('listViewPrevalueHelper', listViewPrevalueHelper); + + +})(); diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/listview/sortby.prevalues.controller.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/listview/sortby.prevalues.controller.js index 480a78ee2d..333b91f81f 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/listview/sortby.prevalues.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/listview/sortby.prevalues.controller.js @@ -1,7 +1,17 @@ -function sortByPreValsController($rootScope, $scope, localizationService, editorState) { +function sortByPreValsController($rootScope, $scope, localizationService, editorState, listViewPrevalueHelper) { + //Get the prevalue from the correct place + function getPrevalues() { + if (editorState.current.preValues) { + return editorState.current.preValues; + } + else { + return listViewPrevalueHelper.getPrevalues(); + } + } + //Watch the prevalues $scope.$watch(function () { - return _.findWhere(editorState.current.preValues, { key: "includeProperties" }).value; + return _.findWhere(getPrevalues(), { key: "includeProperties" }).value; }, function () { populateFields(); }, true); //Use deep watching, otherwise we won't pick up header changes @@ -15,7 +25,7 @@ function sortByPreValsController($rootScope, $scope, localizationService, editor } // Get list of properties assigned as columns of the list view - var propsPreValue = _.findWhere(editorState.current.preValues, { key: "includeProperties" }); + var propsPreValue = _.findWhere(getPrevalues(), { key: "includeProperties" }); // Populate list of options for the default sort (all the columns plus then node name) $scope.sortByFields = [];