Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save mii9000/779d4a2857281851e569a83c28053681 to your computer and use it in GitHub Desktop.
Save mii9000/779d4a2857281851e569a83c28053681 to your computer and use it in GitHub Desktop.
Generic TypeScript Angular 1.X Controller (Base+Child)
module App {
export class BaseController<T extends Entity> {
// my services
searchService: SearchService;
saveService: SaveService;
authService: AuthService;
url: UrlService;
// my variables
searchRequest: SearchRequest;
isUpdateMode: boolean;
user: AccountInfo;
// angular ui params
stateService: angular.ui.IStateService;
stateParams: angular.ui.IStateParamsService;
// generic variables
commandUrl: string;
queryUrl: string;
models: T[];
model: T;
constructor(
$location: angular.ILocationService,
$state: angular.ui.IStateService,
$stateParams: angular.ui.IStateParamsService,
url: UrlService,
search: SearchService,
save: SaveService,
authService: AuthService,
commandUrl: string,
queryUrl: string
) {
this.url = url;
this.commandUrl = commandUrl;
this.queryUrl = queryUrl;
this.searchService = search;
this.saveService = save;
this.authService = authService;
this.stateService = $state;
this.stateParams = $stateParams;
this.activate();
var acc = this.authService.AccountInfo;
//console.log(acc);
if (acc && acc.IsAuth) {
this.loadUser();
}
}
loadUser(): void {
var self = this;
self.user = this.authService.AccountInfo;
}
goto(page: number): void {
this.searchRequest.Page = page;
this.search();
}
activate() {
this.model = null;
this.models = [];
this.isUpdateMode = false;
this.searchRequest = new SearchRequest("", "Modified", "False", "");
this.search();
}
search(): void {
var self = this;
var errorCallback = (error: any): void => {
console.log(error);
};
self.searchService.Search(self.searchRequest, self.queryUrl+"/Data").then((response: SearchResponse): void => {
console.log(response);
self.models = <any>response.Models;
}, errorCallback);
var countSuccessCallback = (response: SearchResponse): void => {
self.searchRequest.TotalPage = Math.ceil(response.Data / 10);
};
var countErrorCallback = (error: any): void => {
console.log(error);
};
self.searchService.Search(self.searchRequest, self.queryUrl+"/Count").then(countSuccessCallback, countErrorCallback);
}
edit(p: T): void {
this.model = p;
this.isUpdateMode = true;
}
save(): void {
var self = this;
var successCallback = (response: BaseResponse): void => {
self.activate();
};
var errorCallback = (error: any): void => {
console.log(error);
};
self.saveService.Save(self.model, self.commandUrl).then(successCallback, errorCallback);
}
update(): void {
var self = this;
var successCallback = (response: BaseResponse): void => {
self.activate();
};
var errorCallback = (error: any): void => {
console.log(error);
};
self.saveService.Update(self.model, self.commandUrl).then(successCallback, errorCallback);
}
delete(id: string): void {
var self = this;
var successCallback = (response: BaseResponse): void => {
self.activate();
};
var errorCallback = (error: any): void => {
console.log(error);
};
self.saveService.Delete(id, self.commandUrl).then(successCallback, errorCallback);
}
}
}
module App {
"use strict";
export class CustomerController extends BaseController<Customer> {
static $inject: string[] =
[
"$location", "$state", "$stateParams",
"UrlService", "SearchService", "SaveService", "AuthService"
];
constructor(
location: angular.ILocationService,
state: angular.ui.IStateService,
stateParams: angular.ui.IStateParamsService,
url: UrlService,
search: SearchService,
save: SaveService,
authService: AuthService
) {
super(location, state, stateParams, url, search, save, authService, url.Customer, url.CustomerQuery);
}
}
angular.module("app").controller("CustomersController", CustomerController);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment