ui-modules/home/app/views/main/main.controller.js (62 lines of code) (raw):

/* * 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. */ import angular from 'angular'; import brooklynUiModulesApi from 'brooklyn-ui-utils/api/brooklyn/ui-modules'; import brooklynApi from 'brooklyn-ui-utils/brooklyn.api/brooklyn.api'; import uiRouter from 'angular-ui-router'; import {HIDE_INTERSTITIAL_SPINNER_EVENT} from 'brooklyn-ui-utils/interstitial-spinner/interstitial-spinner'; import template from './main.template.html'; import angularSanitize from 'angular-sanitize'; const MODULE_NAME = 'states.main'; angular.module(MODULE_NAME, [brooklynUiModulesApi, uiRouter, brooklynApi, angularSanitize]) .config(['$stateProvider', mainStateConfig]); export default MODULE_NAME; export const mainState = { name: 'main', url: '/', template: template, controller: ['$scope', '$state', 'uiModules', 'catalogApps', 'brUtilsGeneral', mainStateController], controllerAs: 'vm', resolve: { uiModules: ['brooklynUiModulesApi', (brooklynUiModulesApi) => { return brooklynUiModulesApi.getUiModules(); }], catalogApps: ['catalogApi', (catalogApi) => { return catalogApi.getTypes({params: {supertype: 'org.apache.brooklyn.api.entity.Application'}}).then( applications => filterCatalogQuickLaunch(applications.filter(application => application.template)) ).catch(prob => { console.warn("Error initializing: ", prob); return []; }); }] } }; export function filterCatalogQuickLaunch(list, callbackForFiltered) { // optionally tag things with 'catalog_quick_launch': if any apps are so tagged, // then only apps with such tags will be shown; otherwise show all marked as templates. // the callback is used for clients who wish to adjust their behaviour if tags are used, // eg in deploy.controller where noCreateLocationLink is set on the quick launch if there are tagged locations if (!list) { list = []; } let tagged = list.filter(i => i && i.tags && i.tags.indexOf("catalog_quick_launch")>=0); if (callbackForFiltered) { callbackForFiltered(tagged, list); } return tagged.length ? tagged : list; } export function mainStateConfig($stateProvider) { $stateProvider.state(mainState); } export function mainStateController($scope, $state, uiModules, catalogApps, brUtilsGeneral) { $scope.$emit(HIDE_INTERSTITIAL_SPINNER_EVENT); this.uiModules = uiModules .filter(({ types }) => types.includes('home-ui-module')) .sort(brUtilsGeneral.uiModuleComparator); this.catalogApps = catalogApps; this.pagination = { page: 1, itemsPerPage: 6 }; this.onModuleHoverEnter = (x) => { console.log(x); $scope.hoveredModule = x; }; this.onModuleHoverLeave = (x) => { $scope.hoveredModule = null; }; }