using decorators to write AngularJS in nearly identical syntax to Angular 2
This commit is contained in:
parent
8e863b8cf5
commit
c60ce4a696
19 changed files with 559 additions and 488 deletions
22
static/js/services/page/page.service.impl.spec.ts
Normal file
22
static/js/services/page/page.service.impl.spec.ts
Normal file
|
@ -0,0 +1,22 @@
|
|||
import { PageServiceImpl } from './page.service.impl';
|
||||
|
||||
|
||||
describe("Service: PageServiceImpl", () => {
|
||||
var pageServiceImpl: PageServiceImpl;
|
||||
|
||||
beforeEach(() => {
|
||||
pageServiceImpl = new PageServiceImpl();
|
||||
});
|
||||
|
||||
describe("create", () => {
|
||||
|
||||
});
|
||||
|
||||
describe("get", () => {
|
||||
|
||||
});
|
||||
|
||||
describe("$get", () => {
|
||||
|
||||
});
|
||||
});
|
45
static/js/services/page/page.service.impl.ts
Normal file
45
static/js/services/page/page.service.impl.ts
Normal file
|
@ -0,0 +1,45 @@
|
|||
import { Injectable } from 'angular-ts-decorators';
|
||||
import { PageService } from './page.service';
|
||||
|
||||
|
||||
@Injectable(PageService.name)
|
||||
export class PageServiceImpl implements ng.IServiceProvider {
|
||||
|
||||
private pages: any = {};
|
||||
|
||||
constructor() {
|
||||
|
||||
}
|
||||
|
||||
public create(pageName: string,
|
||||
templateName: string,
|
||||
controller?: any,
|
||||
flags: any = {},
|
||||
profiles: string[] = ['old-layout', 'layout']): void {
|
||||
for (var i = 0; i < profiles.length; ++i) {
|
||||
this.pages[profiles[i] + ':' + pageName] = {
|
||||
'name': pageName,
|
||||
'controller': controller,
|
||||
'templateName': templateName,
|
||||
'flags': flags
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public get(pageName: string, profiles: any[]): any[] | null {
|
||||
for (var i = 0; i < profiles.length; ++i) {
|
||||
var current = profiles[i];
|
||||
var key = current.id + ':' + pageName;
|
||||
var page = this.pages[key];
|
||||
if (page) {
|
||||
return [current, page];
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public $get(): PageService {
|
||||
return this;
|
||||
}
|
||||
}
|
32
static/js/services/page/page.service.ts
Normal file
32
static/js/services/page/page.service.ts
Normal file
|
@ -0,0 +1,32 @@
|
|||
/**
|
||||
* Manages the creation and retrieval of pages (route + controller)
|
||||
*/
|
||||
export abstract class PageService implements ng.IServiceProvider {
|
||||
|
||||
/**
|
||||
* Create a page.
|
||||
* @param pageName The name of the page.
|
||||
* @param templateName The file name of the template.
|
||||
* @param controller Controller for the page.
|
||||
* @param flags Additional flags passed to route provider.
|
||||
* @param profiles Available profiles.
|
||||
*/
|
||||
public abstract create(pageName: string,
|
||||
templateName: string,
|
||||
controller?: any,
|
||||
flags?: any,
|
||||
profiles?: string[]): void;
|
||||
|
||||
/**
|
||||
* Retrieve a registered page.
|
||||
* @param pageName The name of the page.
|
||||
* @param profiles Available profiles to search.
|
||||
*/
|
||||
public abstract get(pageName: string, profiles: any[]): any[] | null;
|
||||
|
||||
/**
|
||||
* Provide the service instance.
|
||||
* @return pageService The singleton service instance.
|
||||
*/
|
||||
public abstract $get(): PageService;
|
||||
}
|
|
@ -1,7 +1,9 @@
|
|||
import { ViewArray } from './view-array';
|
||||
import { Inject } from '../../decorators/inject/inject.decorator';
|
||||
import { Injectable } from 'angular-ts-decorators';
|
||||
|
||||
|
||||
@Injectable(ViewArray.name)
|
||||
export class ViewArrayImpl implements ViewArray {
|
||||
|
||||
public entries: any[];
|
||||
|
|
Reference in a new issue