Commit 40711fe8675bb6d10b1b4f7d7a4cbd0b7ba53983

Authored by Ábner Oliveira
2 parents e5783cb3 19a7162c

merge with ngforward branch

1 node_modules/ 1 node_modules/
2 bower_components/ 2 bower_components/
3 coverage/ 3 coverage/
  4 +docs/
4 .sass-cache/ 5 .sass-cache/
5 .idea/ 6 .idea/
6 .tmp/ 7 .tmp/
@@ -111,4 +111,8 @@ gulp.task('clean', function () { @@ -111,4 +111,8 @@ gulp.task('clean', function () {
111 return $.del([path.join(conf.paths.dist, '/'), path.join(conf.paths.tmp, '/')]); 111 return $.del([path.join(conf.paths.dist, '/'), path.join(conf.paths.tmp, '/')]);
112 }); 112 });
113 113
  114 +gulp.task('clean-docs', [], function() {
  115 + return $.del([path.join(conf.paths.docs, '/')]);
  116 +});
  117 +
114 gulp.task('build', ['html', 'fonts', 'other', 'locale']); 118 gulp.task('build', ['html', 'fonts', 'other', 'locale']);
@@ -15,7 +15,8 @@ exports.paths = { @@ -15,7 +15,8 @@ exports.paths = {
15 src: 'src', 15 src: 'src',
16 dist: 'dist', 16 dist: 'dist',
17 tmp: '.tmp', 17 tmp: '.tmp',
18 - e2e: 'e2e' 18 + e2e: 'e2e',
  19 + docs: 'docs'
19 }; 20 };
20 21
21 /** 22 /**
@@ -27,3 +27,42 @@ wrench.readdirSyncRecursive('./gulp').filter(function(file) { @@ -27,3 +27,42 @@ wrench.readdirSyncRecursive('./gulp').filter(function(file) {
27 gulp.task('default', ['clean'], function () { 27 gulp.task('default', ['clean'], function () {
28 gulp.start('build'); 28 gulp.start('build');
29 }); 29 });
  30 +
  31 +gulp.task('ngdocs', ['clean-docs'], function () {
  32 + var gulpDocs = require('gulp-ngdocs');
  33 + var options = {
  34 + scripts: [
  35 + 'bower_components/angular/angular.min.js',
  36 + 'bower_components/angular/angular.min.js.map',
  37 + 'bower_components/angular-animate/angular-animate.min.js',
  38 + 'bower_components/angular-animate/angular-animate.min.js.map'
  39 + //'bower_components/angular/angular.js'
  40 + ],
  41 + html5Mode: true,
  42 + startPage: '/',
  43 + title: "Noosfero Angular Theme Documentation",
  44 + //image: "path/to/my/image.png",
  45 + //imageLink: "http://my-domain.com",
  46 + titleLink: "/",
  47 + loadDefaults: {
  48 + angular: false,
  49 + angularAnimate: false
  50 + }
  51 + }
  52 + return gulpDocs.sections({
  53 + api: {
  54 + glob:[
  55 + //'src/**/*.js', '!src/noosfero.js', '!src/noosfero-specs.js'
  56 + //'src/noosfero.js'
  57 + 'src/**/*.ts'
  58 + ],//, '!src/**/*.spec.js'],
  59 + api: true,
  60 + title: 'API Documentation'
  61 + },
  62 + tutorial: {
  63 + glob: ['content/tutorial/*.ngdoc'],
  64 + title: 'Tutorial'
  65 + }
  66 + }).pipe(gulpDocs.process(options)).pipe(gulp.dest('./docs'));
  67 +});
  68 +
@@ -11,6 +11,7 @@ @@ -11,6 +11,7 @@
11 "build": "webpack; gulp build", 11 "build": "webpack; gulp build",
12 "webpack": "webpack", 12 "webpack": "webpack",
13 "karma": "concurrently \"webpack -w\" \"karma start\"", 13 "karma": "concurrently \"webpack -w\" \"karma start\"",
  14 + "docs": "gulp ngdocs; static-server docs",
14 "coverage": "karma start --single-run; npm run remap-coverage", 15 "coverage": "karma start --single-run; npm run remap-coverage",
15 "remap-coverage": "ts-node --project ./dev-scripts ./dev-scripts/remapCoverage.ts", 16 "remap-coverage": "ts-node --project ./dev-scripts ./dev-scripts/remapCoverage.ts",
16 "test-single": "karma start --single-run", 17 "test-single": "karma start --single-run",
@@ -44,6 +45,7 @@ @@ -44,6 +45,7 @@
44 "gulp-minify-css": "~1.2.1", 45 "gulp-minify-css": "~1.2.1",
45 "gulp-minify-html": "~1.0.4", 46 "gulp-minify-html": "~1.0.4",
46 "gulp-ng-annotate": "~1.1.0", 47 "gulp-ng-annotate": "~1.1.0",
  48 + "gulp-ngdocs": "0.2.13",
47 "gulp-protractor": "~1.0.0", 49 "gulp-protractor": "~1.0.0",
48 "gulp-rename": "~1.2.2", 50 "gulp-rename": "~1.2.2",
49 "gulp-replace": "~0.5.4", 51 "gulp-replace": "~0.5.4",
@@ -71,13 +73,13 @@ @@ -71,13 +73,13 @@
71 "karma-webpack": "^1.7.0", 73 "karma-webpack": "^1.7.0",
72 "lodash": "~3.10.1", 74 "lodash": "~3.10.1",
73 "main-bower-files": "~2.9.0", 75 "main-bower-files": "~2.9.0",
74 - "ng-forward": "0.0.1-alpha.12",  
75 "on-build-webpack": "^0.1.0", 76 "on-build-webpack": "^0.1.0",
76 "phantomjs": "~1.9.18", 77 "phantomjs": "~1.9.18",
77 "phantomjs-polyfill": "0.0.2", 78 "phantomjs-polyfill": "0.0.2",
78 "reflect-metadata": "^0.1.3", 79 "reflect-metadata": "^0.1.3",
79 "remap-istanbul": "github:sitepen/remap-istanbul", 80 "remap-istanbul": "github:sitepen/remap-istanbul",
80 "replace": "^0.3.0", 81 "replace": "^0.3.0",
  82 + "static-server": "^2.0.1",
81 "ts-loader": "^0.8.1", 83 "ts-loader": "^0.8.1",
82 "ts-node": "^0.5.5", 84 "ts-node": "^0.5.5",
83 "tslint": "^3.5.0", 85 "tslint": "^3.5.0",
src/app/components/noosfero-activities/activities.component.ts
1 import {Component, Input} from "ng-forward"; 1 import {Component, Input} from "ng-forward";
2 import {NoosferoActivity} from "./activity/activity.component"; 2 import {NoosferoActivity} from "./activity/activity.component";
3 3
  4 +/**
  5 + * @ngdoc controller
  6 + * @name NoosferoActivities
  7 + * @description
  8 + * The controller responsible to retreive profile activities.
  9 + */
  10 +
4 @Component({ 11 @Component({
5 selector: "noosfero-activities", 12 selector: "noosfero-activities",
6 templateUrl: 'app/components/noosfero-activities/activities.html', 13 templateUrl: 'app/components/noosfero-activities/activities.html',
@@ -8,6 +15,13 @@ import {NoosferoActivity} from "./activity/activity.component"; @@ -8,6 +15,13 @@ import {NoosferoActivity} from "./activity/activity.component";
8 }) 15 })
9 export class NoosferoActivities { 16 export class NoosferoActivities {
10 17
  18 + /**
  19 + * @ngdoc property
  20 + * @propertyOf NoosferoActivities
  21 + * @name activities
  22 + * @returns {Activity[]} An array of {@link Activity}.
  23 + */
11 @Input() activities: noosfero.Activity[]; 24 @Input() activities: noosfero.Activity[];
12 25
  26 +
13 } 27 }
src/app/components/noosfero-articles/article/article_view.ts
1 import { bundle, Input, Inject, Component, Directive } from 'ng-forward'; 1 import { bundle, Input, Inject, Component, Directive } from 'ng-forward';
2 import {ArticleBlog} from "../blog/blog.component"; 2 import {ArticleBlog} from "../blog/blog.component";
3 3
  4 +/**
  5 + * @ngdoc controller
  6 + * @name ArticleDefaultView
  7 + * @description
  8 + * A default view for Noosfero Articles. If the specific article view is
  9 + * not implemented, then this view is used.
  10 + */
4 @Component({ 11 @Component({
5 selector: 'noosfero-default-article', 12 selector: 'noosfero-default-article',
6 templateUrl: 'app/components/noosfero-articles/article/article.html' 13 templateUrl: 'app/components/noosfero-articles/article/article.html'
@@ -12,6 +19,13 @@ export class ArticleDefaultView { @@ -12,6 +19,13 @@ export class ArticleDefaultView {
12 19
13 } 20 }
14 21
  22 +/**
  23 + * @ngdoc controller
  24 + * @name ArticleView
  25 + * @description
  26 + * A dynamic view for articles. It uses the article type to replace
  27 + * the default template with the custom article directive.
  28 + */
15 @Component({ 29 @Component({
16 selector: 'noosfero-article', 30 selector: 'noosfero-article',
17 template: 'not-used', 31 template: 'not-used',
src/app/components/noosfero-articles/blog/blog.component.ts
@@ -2,6 +2,12 @@ import {Component, Input, Inject} from "ng-forward"; @@ -2,6 +2,12 @@ import {Component, Input, Inject} from "ng-forward";
2 2
3 import {ArticleService} from "../../../../lib/ng-noosfero-api/http/article.service"; 3 import {ArticleService} from "../../../../lib/ng-noosfero-api/http/article.service";
4 4
  5 +/**
  6 + * @ngdoc controller
  7 + * @name ArticleBlog
  8 + * @description
  9 + * An specific {@link ArticleView} for Blog articles.
  10 + */
5 @Component({ 11 @Component({
6 selector: "noosfero-blog", 12 selector: "noosfero-blog",
7 templateUrl: "app/components/noosfero-articles/blog/blog.html" 13 templateUrl: "app/components/noosfero-articles/blog/blog.html"
src/app/components/noosfero/profile-image/index.ts
  1 +/**
  2 + * Module for the image component in the Noosfero Angular Theme
  3 + * @namespace components.noosfero.profile-image
  4 + */
1 /* Module Index Entry - generated using the script npm run generate-index */ 5 /* Module Index Entry - generated using the script npm run generate-index */
src/app/components/noosfero/profile-image/profile-image.component.spec.ts
  1 +/**
  2 + * @ngdoc overview
  3 + * @name components.noosfero.profile-image.ProfileImageSpec
  4 + * @description
  5 + * This file contains the tests for the {@link components.noosfero.profile-image.ProfileImage} component.
  6 + */
1 7
2 import {TestComponentBuilder, ComponentFixture} from 'ng-forward/cjs/testing/test-component-builder'; 8 import {TestComponentBuilder, ComponentFixture} from 'ng-forward/cjs/testing/test-component-builder';
3 import {Pipe, Input, provide, Component} from 'ng-forward'; 9 import {Pipe, Input, provide, Component} from 'ng-forward';
src/app/components/noosfero/profile-image/profile-image.component.ts
1 import {Inject, Input, Component} from "ng-forward"; 1 import {Inject, Input, Component} from "ng-forward";
2 2
  3 +
  4 +/**
  5 + * @ngdoc controller
  6 + * @name components.noosfero.profile-image.ProfileImage
  7 + * @description The component responsible for rendering the profile image
  8 + * @exports ProfileImage
  9 + */
3 @Component({ 10 @Component({
4 selector: "noosfero-profile-image", 11 selector: "noosfero-profile-image",
5 templateUrl: 'app/components/noosfero/profile-image/profile-image.html', 12 templateUrl: 'app/components/noosfero/profile-image/profile-image.html',
6 }) 13 })
7 export class ProfileImage { 14 export class ProfileImage {
8 15
  16 + /**
  17 + * @ngdoc property
  18 + * @name profile
  19 + * @propertyOf components.noosfero.profile-image.ProfileImage
  20 + * @description
  21 + * The Noosfero {@link models.Profile} holding the image.
  22 + */
9 @Input() profile: noosfero.Profile; 23 @Input() profile: noosfero.Profile;
  24 + /**
  25 + * @ngdoc property
  26 + * @name defaultIcon
  27 + * @propertyOf components.noosfero.profile-image.ProfileImage
  28 + * @descritpion
  29 + * The default icon used by this profile
  30 + */
10 defaultIcon: string; 31 defaultIcon: string;
11 32
  33 + /**
  34 + * @ngdoc method
  35 + * @name ngOnInit
  36 + * @methodOf components.noosfero.profile-image.ProfileImage
  37 + * @description
  38 + * Initializes the icon names to their corresponding values depending on the profile type passed to the controller
  39 + */
12 ngOnInit() { 40 ngOnInit() {
13 this.defaultIcon = 'fa-users'; 41 this.defaultIcon = 'fa-users';
14 if (this.profile && this.profile.type === 'Person') { 42 if (this.profile && this.profile.type === 'Person') {
src/app/index.module.ts
  1 +
  2 +/**
  3 + * @ngdoc service
  4 + * @name NoosferoApp
  5 + * @description
  6 + * The main NoosferoApp module class. It provide helper static methods used by
  7 + * the module to initialize the application.
  8 + */
1 export class NoosferoApp { 9 export class NoosferoApp {
2 10
  11 + /**
  12 + * @ngdoc property
  13 + * @name appName
  14 + * @propertyOf NoosferoApp
  15 + * @returns {string} the name of this application ('noosferoApp')
  16 + */
3 static appName: string = "noosferoApp"; 17 static appName: string = "noosferoApp";
  18 +
  19 + /**
  20 + * @ngdoc property
  21 + * @name angularModule
  22 + * @propertyOf NoosferoApp
  23 + * @returns {any} all the modules installed for this application
  24 + */
4 static angularModule: any; 25 static angularModule: any;
5 - // static init(angularModule: any) {  
6 - // NoosferoApp.angularModule  
7 - // angular.module(NoosferoApp.appName, ["ngAnimate", "ngCookies", "ngStorage", "ngTouch",  
8 - // "ngSanitize", "ngMessages", "ngAria", "restangular",  
9 - // "ui.router", "ui.bootstrap", "toastr",  
10 - // "angularMoment", "angular.filter", "akoenig.deckgrid",  
11 - // "angular-timeline", "duScroll", "oitozero.ngSweetAlert"]);  
12 - // }  
13 26
  27 + /**
  28 + * @ngdoc method
  29 + * @name addConfig
  30 + * @methodOf NoosferoApp
  31 + * @param {Function} configFunc the configuration function to add
  32 + * @descprition adds a configuration function to
  33 + * the {@link NoosferoApp#angularModule}
  34 + */
14 static addConfig(configFunc: Function) { 35 static addConfig(configFunc: Function) {
15 NoosferoApp.angularModule.config(configFunc); 36 NoosferoApp.angularModule.config(configFunc);
16 } 37 }
17 38
  39 + /**
  40 + * @ngdoc method
  41 + * @name addConstants
  42 + * @methodOf NoosferoApp
  43 + * @param {string} constantName the constant name
  44 + * @param {any} value the constant value
  45 + * @description adds a constant to the {@link NoosferoApp#angularModule}
  46 + */
18 static addConstants(constantName: string, value: any) { 47 static addConstants(constantName: string, value: any) {
19 NoosferoApp.angularModule.constant(constantName, value); 48 NoosferoApp.angularModule.constant(constantName, value);
20 } 49 }
21 50
  51 + /**
  52 + * @ngdoc method
  53 + * @name addService
  54 + * @methodOf NoosferoApp
  55 + * @param {string} serviceName the service name
  56 + * @param {any} value the service value
  57 + * @description adds a service to the {@link NoosferoApp#angularModule}
  58 + */
22 static addService(serviceName: string, value: any) { 59 static addService(serviceName: string, value: any) {
23 NoosferoApp.angularModule.service(serviceName, value); 60 NoosferoApp.angularModule.service(serviceName, value);
24 } 61 }
25 62
  63 + /**
  64 + * @ngdoc method
  65 + * @name addFactory
  66 + * @methodOf NoosferoApp
  67 + * @param {string} factoryName the factory name
  68 + * @param {any} value the factory value
  69 + * @description adds a factory to the {@link NoosferoApp#angularModule}
  70 + */
26 static addFactory(factoryName: string, value: any) { 71 static addFactory(factoryName: string, value: any) {
27 NoosferoApp.angularModule.factory(factoryName, value); 72 NoosferoApp.angularModule.factory(factoryName, value);
28 } 73 }
29 74
  75 + /**
  76 + * @ngdoc method
  77 + * @name addController
  78 + * @methodOf NoosferoApp
  79 + * @param {string} controllerName the controller name
  80 + * @param {any} value the controller value
  81 + * @description adds a controller to the {@link NoosferoApp#angularModule}
  82 + */
30 static addController(controllerName: string, value: any) { 83 static addController(controllerName: string, value: any) {
31 NoosferoApp.angularModule.controller(controllerName, value); 84 NoosferoApp.angularModule.controller(controllerName, value);
32 } 85 }
33 86
  87 + /**
  88 + * @ngdoc method
  89 + * @name run
  90 + * @methodOf NoosferoApp
  91 + * @param {Function} runFunction the function to execute
  92 + * @description runs a function using the {@link NoosferoApp#angularModule}
  93 + */
34 static run(runFunction: Function) { 94 static run(runFunction: Function) {
35 NoosferoApp.angularModule.run(runFunction); 95 NoosferoApp.angularModule.run(runFunction);
36 } 96 }
src/app/main/main.component.ts
@@ -25,6 +25,16 @@ import {Navbar} from "../components/navbar/navbar"; @@ -25,6 +25,16 @@ import {Navbar} from "../components/navbar/navbar";
25 import {MainBlock} from "../components/noosfero-blocks/main-block/main-block.component"; 25 import {MainBlock} from "../components/noosfero-blocks/main-block/main-block.component";
26 26
27 27
  28 +/**
  29 + * @ngdoc controller
  30 + * @name main.MainContent
  31 + * @requires AuthService, Session
  32 + * @descrition
  33 + * This controller actually contains the main content of Noosfero Angular Theme:
  34 + * - the navbar
  35 + * - the {@link Main} view content
  36 + *
  37 + */
28 @Component({ 38 @Component({
29 selector: 'main-content', 39 selector: 'main-content',
30 templateUrl: "app/main/main.html", 40 templateUrl: "app/main/main.html",
@@ -34,6 +44,20 @@ export class MainContent { @@ -34,6 +44,20 @@ export class MainContent {
34 44
35 } 45 }
36 46
  47 +/**
  48 + * @ngdoc controller
  49 + * @name main.Main
  50 + * @requires AuthService, Session, Notification, ArticleBlog, ArticleView, Boxes, Block, LinkListBlock,
  51 + * MainBlock, RecentDocumentsBlock, Navbar, ProfileImageBlock, MembersBlock,
  52 + * NoosferoTemplate, DateFormat, RawHTMLBlock
  53 + * @description
  54 + * The Main controller for the Noosfero Angular Theme application.
  55 + *
  56 + * The main route '/' is defined as the URL for this controller, which routes
  57 + * requests to the {@link main.MainContent} controller and also, the '/profile' route,
  58 + * which routes requests to the {@link profile.Profile} controller. See {@link profile.Profile}
  59 + * for more details on how various Noosfero profiles are rendered.
  60 + */
37 @Component({ 61 @Component({
38 selector: 'main', 62 selector: 'main',
39 template: '<div ng-view></div>', 63 template: '<div ng-view></div>',
src/app/profile/profile.component.ts
@@ -8,6 +8,14 @@ import {NoosferoActivities} from &quot;../components/noosfero-activities/activities.c @@ -8,6 +8,14 @@ import {NoosferoActivities} from &quot;../components/noosfero-activities/activities.c
8 import {ProfileService} from "../../lib/ng-noosfero-api/http/profile.service"; 8 import {ProfileService} from "../../lib/ng-noosfero-api/http/profile.service";
9 import {Notification} from "../components/notification/notification.component"; 9 import {Notification} from "../components/notification/notification.component";
10 10
  11 +
  12 +/**
  13 + * @ngdoc controller
  14 + * @name profile.Profile
  15 + * @description
  16 + * This is the profile controller. It provide routes to supported Noosfero Profiles.
  17 + */
  18 +
11 @Component({ 19 @Component({
12 selector: 'profile', 20 selector: 'profile',
13 templateUrl: "app/profile/profile.html", 21 templateUrl: "app/profile/profile.html",
src/lib/ng-noosfero-api/interfaces/activity.ts
1 namespace noosfero { 1 namespace noosfero {
  2 + /**
  3 + * @ngdoc interface
  4 + * @name noofero.Activity
  5 + * @description
  6 + * A representation of a {@link noosfero.Profile} activity in Noosfero.
  7 + */
2 export interface Activity { 8 export interface Activity {
  9 + /**
  10 + * @ngdoc property
  11 + * @name verb
  12 + * @propertyOf noofero.Activity
  13 + * @returns {string} The activity verb.
  14 + */
3 verb: string; 15 verb: string;
4 } 16 }
5 } 17 }
6 \ No newline at end of file 18 \ No newline at end of file
src/lib/ng-noosfero-api/interfaces/person.ts
1 namespace noosfero { 1 namespace noosfero {
  2 + /**
  3 + * @ngdoc interface
  4 + * @name noosfero.Person
  5 + * @description
  6 + * A representation of a Person in Noosfero.
  7 + */
2 export interface Person extends Profile { 8 export interface Person extends Profile {
3 9
4 } 10 }
src/lib/ng-noosfero-api/interfaces/profile.ts
1 1
2 namespace noosfero { 2 namespace noosfero {
3 - export interface Profile extends RestModel { 3 + /**
  4 + * @ngdoc interface
  5 + * @name noofero.Profile
  6 + * @description
  7 + * A representation of a Noosfero Profile.
  8 + */
  9 + export interface Profile extends RestModel {
  10 + /**
  11 + * @ngdoc property
  12 + * @name id
  13 + * @propertyOf noofero.Profile
  14 + * @returns {number} The Profile id
  15 + */
  16 + id: number;
  17 +
  18 + /**
  19 + * @ngdoc property
  20 + * @name identifier
  21 + * @propertyOf noofero.Profile
  22 + * @returns {string} The unque identifier for the Profile
  23 + */
4 identifier: string; 24 identifier: string;
  25 +
  26 + /**
  27 + * @ngdoc property
  28 + * @name type
  29 + * @propertyOf noofero.Profile
  30 + * @returns {string} The Profile type (e.g.: "Person", etc.)
  31 + */
5 type: string; 32 type: string;
6 - name?: string; 33 +
  34 + name: string;
7 } 35 }
8 } 36 }
9 \ No newline at end of file 37 \ No newline at end of file