UNPKG

pip-webui

Version:

HTML5 UI for LOB applications

188 lines (162 loc) 6.4 kB
/** * @file Sample tool module * @copyright Digital Living Software Corp. 2014-2015 */ (function (angular) { 'use strict'; var thisModule = angular.module('pipTool', ['pipTool.View']); thisModule.config( function ($stateProvider, pipSplitProvider, $mdIconProvider) { $mdIconProvider.iconSet('icons', '../images/icons.svg', 512); // Configure module routes $stateProvider .state('tool', { url: '/tool', controller: 'ToolController', template: '<div ui-view></div>', abstract: true }) .state('tool.edit', { url: '/edit/:id', controller: 'ToolEditController', templateUrl: 'tool_edit.html' }) .state('tool.new', { url: '/new', controller: 'ToolNewController', templateUrl: 'tool_new.html' }) .state('tool.view', { controller: 'ToolViewController', template: '<div ui-view></div>', abstract: true }) .state('tool.view.tiles', { url: '?search', reloadOnSearch: false, controller: 'ToolTilesController', templateUrl: 'tool_tiles.html' }) .state('tool.view.split', { url: '/split', controller: 'ToolSplitController', templateUrl: 'tool_split.html', abstract: true }) .state('tool.view.split.list', { url: '?id&search', reloadOnSearch: false, controller: 'ToolSplitListController', templateUrl: 'tool_split_list.html' }) .state('tool.view.split.details', { url: '/:id?show', reloadOnSearch: false, controller: 'ToolSplitDetailsController', templateUrl: 'tool_split_details.html' }) .state('tool.view.split.sub1', { url: '/:id/sub1?sub1_id', reloadOnSearch: false, controller: 'ToolSplitSub1Controller', templateUrl: 'tool_split_sub1.html' }) .state('tool.view.split.sub1_details', { url: '/:id/sub1/:sub1_id', controller: 'ToolSplitSub1DetailsController', templateUrl: 'tool_split_sub1_details.html' }) .state('tool.view.split.sub2', { url: '/:id/sub2', controller: 'ToolSplitSub2Controller', templateUrl: 'tool_split_sub2.html' }); pipSplitProvider.addTransitionSequence([ 'tool.view.split.list', 'tool.view.split.details', 'tool.view.split.sub1', 'tool.view.split.sub1_details', 'tool.view.split.sub2' ]); } ); thisModule.controller('ToolController', function ($scope, $rootScope, $state, $location) { $scope.navCollection = [ {id: 1, title: 'Tab 1'}, {id: 2, title: 'Tab 2'}, {id: 3, title: 'Tab 3'}, {id: 4, title: 'Tab 4'} ]; $scope.selected = {}; $scope.itemCollection = createItems(); $scope.updateStateUrl = updateStateUrl; $scope.transition = transition; $scope.getItem = getItem; $scope.selectItem = selectItem; return; // ------------------- function createItem(id) { var item = { title: id + 1, id: id, sub1: [], sub2: [] }, i; for (i = 0; i < 10; i++) { item.sub1.push({ title: i + 1 + (id + 1), id: String(id) + '-' + String(i) }); item.sub2.push({ title: i + 1 + (id + 1), id: 'a-' + String(id) + '-' + String(i) }); } return item; } function createItems() { var items = [], i; for (i = 0; i < 40; i++) { items.push(createItem(i)); } return items; } function findItemById(id, collection) { var i, j, item, subItem, subAction; for (i = 0; i < collection.length; i++) { item = collection[i]; if (String(item.id) === String(id)) { return item; } if (item.sub1) { for (j = 0; j < item.sub1.length; j++) { subItem = item.sub1[j]; subAction = item.sub2[j]; if (subItem.id === id) { return subItem; } if (subAction.id === id) { return subAction; } } } } return collection[0]; } function getItem(id, collection, search) { return findItemById(id, collection || $scope.itemCollection); } function selectItem(id, collection, search) { var s = search || false; $scope.selectedItem = $scope.getItem(id, collection, s); if ($scope.selectedItem) { $rootScope.$state.params.id = $scope.selectedItem.id; } } function updateStateUrl(stateName, stateParams) { $location.replace().search(stateParams); } function transition(stateName, stateParams) { $state.transitionTo(stateName, stateParams); } }); })(window.angular);