This repository was archived by the owner on Sep 8, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 49
/
Copy pathProject.js
85 lines (80 loc) · 2.52 KB
/
Project.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/*
Project Module
============
*/
var module = angular.module('App.Project', ['ui.router', 'ui.bootstrap'])
module.config(function($stateProvider) {
$stateProvider.state( 'projects', {
parent: 'authenticated',
url: '/projects',
templateUrl: 'modules/Project/Projects.html',
controller: 'Projects',
resolve: {
projects: (authenticatedUser, Project) => Project.list(authenticatedUser.id)
},
// `breadcrumbs` resolved in `authenticated` state
onEnter(breadcrumbs) {
breadcrumbs.push({ label: 'Projects', sref: 'projects' });
},
onExit(breadcrumbs) {
breadcrumbs.pop();
},
});
$stateProvider.state( 'projects.new', {
url: '/new', // /projects/new (state must be defined BEFORE /:projectId)
resolve: {
project: (authenticatedUser, Project) => new Project({ user_id: authenticatedUser.id })
},
templateUrl: 'modules/Project/Form.html',
controller: 'ProjectForm',
// `breadcrumbs` resolved in `authenticated` state
onEnter(breadcrumbs) {
breadcrumbs.push({ label: 'New', sref: 'projects.new' });
},
onExit(breadcrumbs) {
breadcrumbs.pop();
}
});
$stateProvider.state( 'project', {
parent: 'projects',
url: '/:projectId', // /projects/:projectId (state must be defined AFTER /new)
views: {
'': { // Projects.html: <ui-view></ui-view>
templateUrl: 'modules/Project/Project.html',
controller: 'Project'
},
'header@authenticated': { // Authenticated.html: <ui-view name="header"></ui-view>
templateUrl: 'modules/Project/ProjectHeader.html',
controller: 'ProjectHeader'
}
},
resolve: {
project: ($stateParams, Project) => Project.get($stateParams.projectId)
},
onEnter(project, breadcrumbs) {
project.open();
breadcrumbs.push({ label: project.name, sref: 'project' }); // Params inferred when going up
},
onExit(project, breadcrumbs) {
project.close();
breadcrumbs.pop();
}
});
$stateProvider.state( 'project.edit', {
templateUrl: 'modules/Project/Form.html',
controller: 'ProjectForm'
});
});
module.controller( 'Projects', ($scope, projects) => {
$scope.projects = projects;
});
module.controller( 'Project', ($scope, project) => {
$scope.project = project;
});
module.controller( 'ProjectHeader', ($scope, project) => {
$scope.project = project;
});
module.controller( 'ProjectForm', ($scope, project) => {
// injected `project` is either a new object or an existing object
$scope.project = project;
});