-
Notifications
You must be signed in to change notification settings - Fork 2
Service'ler
#Logger
Bu servis,kullanıcıyı herhangi bir işlem hakkında bilgilendirmek için kullanılır.Controller üzerinde this.logger
şeklinde bu servise ulaşalır
3 farklı tipi vardır.
Tüm logger servisleri IBaseLogger interface'ini implemente eder.
- log
- info
- error
- warn
- success
methodları her logger servisi için gecerlidir.Tüm methodlar parametre olarak ILog object'i alır.
log methodu sadece Console logger'da anlamlıdır
###ILog
message : [String] Kullanıya verilecek mesaj bilgisidir.HTML template olarak tanımlanabilir.Zorunludur
message: string;
title: [String] Kullanıya verilecek mesajin başlık text kısmıdır.Zorunlu değildir.
title?: string;
data : [Object] Console logger tarafindan kullanılır.Object debug yapamak amaciyla kullanilir.Zorunlu değildir
data?: any;
isSticky : [Boolean] Toastr ve Notification logger için,mesajları yapişkan yapar.Kullanıcı özellikle kaldırmadikça ekranda durur.Zorunlu değildir
isSticky?: boolean;
###Toastr
ThirdParty "Toastr" kütüphanesini kullanır.LoggerConfig'te belirtilen timeout süresi boyunca ekranda kalır.Default sürelere constants servisinden bakabilirsiniz
Örnek:
this.logger.toastr.success({message:'Are you the six fingered man?'});
###Notification
Sayfa'nın üst kısmına aşagidaki gibi mesaj alanı açarak,kullanıcıyı bilgilendirir.Kapanması için kullacının (X) butonundan kapatması gereklidir.
this.logger.notification.info({message:'Bu sayfa okuma amaçlıdır,değişiklik yapamazsınız !'});
###Console
Angular log servisini kullanır.Verilen mesajlar developer tools/console'da çıkar.Sadece development sürecinde mesajlar verilir.
#Routing
Bu servis,state navigation ve menu yönetimi için kullanılır.Controller'da this.routing
şeklinde erişilebilir.
###Methodlar
addMenus : [Method] Bu method verilen menu dizi bilgisine göre,hiyerarşik menü yapısı oluştur ve state bilgilerini register eder. rtMenu directive'i ile de menüler render olur.
addMenus(states: IMenuModel[]): IRouting;
####Parametreler states : [IMenuModel[]] State/Menu model dizisi.
#####IMenuItem
- title?: [string] Menü caption bilgisi
- titIe18N?: [string] Menu localized key caption bilgisi
- order?: [number] Menü'nün hangi sırada gösterileceği bilgisi
- menuIcon?: [string] font-awesome icon bilgisi
- menuUrl? :[string] Eğer menü custom bir URL olması isteniyorsa bu property kullanılır
- isStickyTab?: [boolean] Sayfayı sticky olarak işaretler.Genel olarak rtTabs directive'i ile beraber kullanılır.
- startGroup?: [boolean] Menu render'in önce Bootstrap dropdown seperator class'ini ekler
- parentId?: [number] Üst menu id'si.Eger null/defined olması durumunda rootMenu olarak ayarlanır.
- isMenu?: [boolean] MenuItem'in menudeki görünürlüğünü ayarlar.Varsayilan false
- state?: [string] State adi.Tüm state name'leri shell.* ile başlamalı.CRUD ve listeleme sayfaları için shell.content.* ile başlamalıdır.
- isFullScreen?: [boolean] Sayfayi fullScreen olarak açar.Varsayilan false
- shortCut?: [string] Menu'ye kısayol ataması yapar
- isQuickMenu?: [boolean] Menüyü quickmenu olarak işaretler.Varsayilan false
Menu'leri tanımlarken bazı kurallara dikkat etmelisiniz
- id parametresi zorunludur ve Unique olmalidir.DB den populate edilen menuler için identifier alani olabilir.
- parentId property'si hiyerarşik yapının ilişkisini tutar.Null/undefined olması bu menunun rootMenu olucagini ifade eder.
- menuIcon bilgisi font-awesome icon bilgisidir ve "fa-" dan sonra gelen key bilgisidir.
- ControllerURL tanımlanmaz ise ve controller bilgisi tanımlı ise,templateURL dizininde controller dosyası aranır.
- Bu method startup.ts run phase'de çalıştırılması uygundur
Edukkan uygulamasındaki menu ekleme örnegini inceleyebilirsiniz.
Return Type: IRouting
current : [Object] Aktif state bilgisini verir
current: IRotaState;
currentUrl: [String] Aktif olan state'in relative URL bilgisini verir.
currentUrl: string;
states : [IMenuModel[]] addMenus methodun'dan verilen orjinal state bilgileridir.
states: IMenuModel[];
menus: [Array] Verilen state dizisine göre olusturulan hiyerarşik menu yapısı.
menus: IHierarchicalMenuItem[];
activeMenu: [Object] Aktif menü bilgisini verir.
activeMenu: IHierarchicalMenuItem;
go : [Method] $state servisini kullanarak state transition işlemi yapar.
go(state: string, params?: any, options?: ng.ui.IStateOptions): ng.IPromise<any>;
$state.go
wiki'sine ayrıntili bilgi için göz atabilirsiniz.
reload : [Method] Aktif state'i tekrar yükler.
reload(): ng.IPromise<any>;
$state.go
wiki'sine ayrıntili bilgi için göz atabilirsiniz.
start: [Method] Menuler eklendikten sonra hangi state'in açılış sayfası olucagini ifade eder.
start(stateName: string, params?: any): void;
Bunun yerine App.setHomePage() methodunu kullanmak daha uygundur
getUrlByState : [Method] Bu method verilen state bilgisini ve param degerine gore,URL bilgisini getirir
getUrlByState(stateName: string, params?: any): string;
$state.href methodunu inceleyebilirsiniz
isActive: [Method] Parametre olarak verilen state'in aktif olup olmadigi bilgisini döndürür
isActive(stateName: string, params?: any, includes?: boolean): boolean;
####Parametreler stateName: [string] Aktifliği kontrol edilecek olan state'in adi params : [object] State params includes?: [boolean] True olması durumunda,State hiyerarşik aktif state dizininde mi kontrolunü yapar.
#Security
Uygulama güvenliği ile ilgili işlemlerin olduğu servis'tir."Security" service adını vererek inject edilebilir.
Authentication için OpenID Connect(OIDC) protokolü kullanılmaktadır..Net implementasyonu için Identity Server 3 kullanılmaktadır.Flow Implicit flow'dur.Ayrıntılı bilgi için IdentityServer dokümantasyonuna bakabilirsiniz
Rota'yı secure yapmak için Global Environments' tan allowAnoynmousAccess ayarını false yapmak gerekiyor.Varsayilan true.Tabi kullanılan restful service'lerde aynı şekilde secure olarak işaretlenmesi gerekiyor.
Temel olarak OIDC 'in 3 tane ayarı vardir ve bu ayarların 2 si Global Environment'ta diğeri SecurityConfig'de set edilmektedir
- Authority
- ClientId
- Scope
Uygulama login olduktan sonra,OIDC token endpoint'ten dönen id_token
bilgisi ve access_token
bilgisi localStorage'a eklenir.id_token
bilgisine göre kullanıcı claim bilgileri extract edilir ve servis üzerindeki currentUser property'sine set edilir. currentUser ayrıca value provider olarak ta register edilerek,tüm uygulama genelinde CurrentUser adıyla inject edilip kullanıcı claim bilgilerine ulaşılabilir.
access_token
bilgiside her restful service requestinin header/Authorization kısmına eklenir.
###Properties & Methods
currentUser: [Object] Kullanıcı claim bilgilerinden oluşan user profil bilgileri.CurrentUser value provider kullanılarak da User bilgilerine ulaşılabilir.
currentUser: IUser;
currentCompany : [Object] Kullanıcı aktif şirket bilgileri.CurrentCompany value provider kullanılarakda aktif şirket bilgilerine ulaşılabilir.
currentCompany: ICompany;
isAuthenticated: [Boolean] Kullanıcı authenticated ise true döndürür
isAuthenticated: boolean;
logOff: [Method] Signout işlemi için bu method çağirilmalidir.
logOff(): ng.IPromise<any>;
##Security Config
Authentication ile ilgili ayarların tutulduğu provider servisi'dir.
####Properties
scope : [string] Hangi resource & client için izin istenecegi bilgisidir.Varsayılan "openid rotauser rotaapi" şeklindedir.
rotauser scope : Client user profile bilgileri IUser üzerindeki temel claim bilgilerini barındırır. rotaapi scope : Server üzerindeki user claim bilgileridir.
scope: string;
clientId : [string] OIDC provider üzerinde kayıtlı client id bilgisi.GlobalEnvironment'tan set edilir
clientId: string;
authority : [string] OIDC token provider root url'sidir.GlobalEnvironment'tan set edilir.
authority: string;
allowAnonymousAccess : [boolean] Authentication'i aktif eder.Varsayilan false'.dir.GlobalEnvironment'tan set edilir.
allowAnonymousAccess: boolean;
authorizedCompanies : [Array] Kullanıcı'nin yetkili olduğu şirket bilgileridir.
authorizedCompanies?: ICompany[];
defaultCompanyId : [number] Aktif şirket id bilgisi.Bu bilgi startup.ts 'te config phase'de kullanıcı varsayilan aktif şirket bilgisini set etmek için kullanılır.
defaultCompanyId?: number;
userProfile : [object] Custom User profil bilgileri.Bu bilgiler ve IUser claim bilgileri extend olucaktir.Aşagidaki örneği inceleyiniz.
userProfile?: any;
avatarUploadUri : [string] Kullanıcı action menu'lerindeki "Avatar Resmi Değiştir" menusündeki server image upload uri bilgisidir.Eger null/undefined ise ilgili menu item invisible olur.
avatarUploadUri?: string;
avatarUri : [string] Kullanıcı avatar resmi data uri bilgisi.
avatarUri?: string;
antiForgeryTokenEnabled: Eger true yapılırsa,her menü değişiminde, antiForgeryTokenUrl property'sinde belirtilen url ye request çekerek header bilgisini gunceller.Varsayilan false
antiForgeryTokenEnabled?: boolean;
##Security Helper Servisleri
CurrentUser : [IUser] Aktif kullanıcı bilgilerini içeren value servis.
CurrentCompany : [ICompany] Aktif şirket bilgilerini içeren value servis.
###Kullanıcı ve Şirket bilgilerinin extend edilmesi
CurrentUser ve CurrentCompany bilgilerini proje ihtiyacina göre extend edebilirsiniz.Bunun için startup.ts dosyasında ilgili restful request'lerinden profile/company bilgilerini çektikten sonra,SecurityConfig üzerinde kullanıcı için userProfile,şirketler için authorizedCompanies değerlerini set etmeliyiz.
Örnek :
startup.ts dosyasına aşagidaki kodu ekleyip,profil/company bilgilerini server'dan yüklüyoruz
import * as userprofile from 'optional!json!/api/kullaniciapi/getprofile!bust';
userProfile bilgisine göre yeni oluşacak user & company interface bilgilerini tanımlıyoruz.
interface IServerUserProfile {
companies?: IAcmeCompany[],
avatarDataUri?: string;
defaultCompanyId?: number;
...
}
interface IAcmeUser extends IUser, IServerUserProfile {
}
interface IAcmeCompany extends ICompany {
//yeni alanlar...
}
Tanımladığımız bu bilgilerle atamalarımızı aşagidaki gibi yapıyoruz.
const companies = (userprofile as IServerUserProfile).companies;
securityConfig.config.authorizedCompanies = companies;
securityConfig.config.userProfile = userprofile;
//Avatar settings
securityConfig.config.avatarUploadUri = '/api/kullaniciapi/changeavatar';
securityConfig.config.avatarUri = (userprofile as IServerUserProfile).avatarDataUri;
Bu şekilde CurrentUser servisini artık IAcmeUser
,CurrentCompany servisini IAcmeCompany
olarak kullanabilirsiniz.
##Kullanıcı Action Menüsü
CurrentUser ,authorizedCompaines ve CurrentCompany bilgileri aşagidaki image'daki gibi ekranda gösterilir.
Tüm authectication süreci için Edukkan demo uygulamasındaki startup.ts dosyasını inceleyebilirisiniz
#Dialogs
Bu servis bootstrap modal servisini kullanarak,kullanıcı interaction işlemleri için gerekli olan modal işlemleri implemente eder.Modal açma,confirm,progress,prompt,fileUpload,imageCropping gibi işlemler yapalabilir. this.dialogs
şeklinde Controller'dan bu servise erişilebilir.
Aşagida tanımlı tüm modal methodların options bilgileri IDialogOptions sınıfında türemiştir.Aşagida parametreler her modal için ortakdir
- message : Modal de gösterilecek message bilgileri. (showModal hariç)
- title : Modal header title bilgisi (showModal hariç)
- okText : Positif button caption bilgisi (showModal hariç)
- windowClass : Modala verilecek extra class bilgisi
Önemli : Tüm modal pencereler sonuc olarak promise döndürür.Eger başarili kapatılırsa sonuc promise'i resolved,değilse rejected şeklinde promise'in state'ini set eder
###Methodlar
showReport: Bu method ,modal pencere içerisinde rdp raporlarını göstermek için kullanılır.
showReport(options: IReportOptions): ng.IPromise<any>;
####Parametreler
options : reportName ve reportViewerUrl parametrelerini içeren objedir.reportName rdp server name adidir.zorunludur. Return Type : Promise
showDialog: Basit bir modal pencere acar.
showDialog(options: IDialogOptions): ng.IPromise<any>;
Örnek
this.dialogs.showDialog({ message: 'Hello world', title: 'Greeting' });
showConfirm: Kullanıcıdan onay almak için kullanılır.
showConfirm(options: IConfirmOptions): ng.IPromise<any>;
Örnek
this.dialogs.showConfirm({ message: 'Are you six fingered man ?', title: 'Confirm six finger', okText: 'Yes its me', cancelText: 'Nop' });
showProgress: LogRunning işlemlerde kullanıcıyı ilerleme hakkında bilgi vermek için kullanılır
showProgress(options: IProgressOptions): IProgressModalInstance;
Örnek
const result = this.dialogs.showProgress({title: 'Bitmedi gitti..',percent : 50 });
//IModalInstance percent oranı 100 yapıldıgı zaman,modal kapanır
result.percent = 100;
showPrompt : Kullanıcı bilgi girişi yapılan prompt modal.
showPrompt(options: IPromptOptions): ng.IPromise<any>;
Örnek
this.dialogs.showPrompt({ subTitle: 'Değer giriniz', initValue: 'Varsayilan değer',title:'Bilgi girişi' });
Örnek olarak edukkan stok min limit girişi örneğine bakabilirsiniz
showFileUpload : Dosya file upload yapmak için kullanılır
showFileUpload(options?: IFileUploadOptions): ng.IPromise<ICroppedImageUploadResult | IFileInfo>;
Örnek:
this.dialogs.showFileUpload({ allowedExtensions: '.png,.jpeg' });
IFileUploadOptions'ayarlarındaki showImageCroppingArea sadece image upload ayarları için kullanılır ve dosya seçiminden sonra clipping area paneli göstererek sadece image'in belli bir bölümünü seçmenize izin verir.Örnek için Edukkan uygulamasındaki urunResmiEkle methodunu inceleyiniz
showImageCropping : Image seçim alanını gösterir.showFileUpload ile beraber kullanılabilir.
showImageCropping(options?: IImageCroppingOptions): ng.IPromise<ICroppedImageUploadResult>;
Örnek:
this.dialogs.showFileUpload({ allowedExtensions: '.png' }).then((file: IFileInfo) => {
this.dialogs.showImageCropping({ imageFile: file }).then((croppedImage: ICroppedImageUploadResult) => {
});
});
showModal : Verilen parametrelere göre Modal pencere açar.
showModal<TResult extends IBaseModel>(options: IModalOptions): ng.IPromise<TResult>;
Modal pencere ile ilgili ayrıntılı bilgi için BaseModalController 'i inceleyebilirsiniz
####Parametreler options : IModalOptions Modal pencere ayarları.Angular BootStrap Modal ayar sınıfından miras alınmıştır.
####IModalOptions
templateUrl: Modal pencere'de açılacak olan HTML template'in relative path bilgisi.Zorunlu controllerUrl : Modal pencerenin controller dosyasının fiziksel dosya relative path bilgisi.Zorunlu değil
Önemli : Modal pencereyi controller kullanmadan açabiliriz.Bu durumda "BaseModalController" modal'ın varsayılan controller'ı olarak set edilecektir.Bu controller'a service inject edebilmek için instanceOptions.services array property'sini kullanabilirsiniz.
instanceOptions : Modal pencerenin kullanacagi parametrelerin verildiği interface.
- model : Modal pencerenin model bilgisi
- params : Model dışında gönderilecek ek parametreler
- services : Eger harici controller dosyası kullanmıyorsak,modal pencerede kullanmak üzere,BaseModalController'a geçilecek service dizisi.
controller : Modal pencerede kullanılacak controller'in adi.Zorunlu değil.
Return Type : Promise<> Modal pencerinin hangi tipte interface döndürecegi bilgisidir.Generic olarak TResult belirtilir
#Caching
Client cache'leme ile ilgili methodları barındıran servistir.Controller'da this.caching
olrak erişilebilir.Eger erişilebilir değil ise "Caching" olarak inject edilebilir.
Önemli : Local ve Session storagelar unavailable olması durumunda CookieStorage kullanılmaktadir
Tüm cacheleme sınıflari ICacher sınıfını implemente ettiğinden aşagidaki methodlar ortakdir.
get : Storage'dan verilen key bilgisine göre cache'lenen datayi döndürür
get<TModel extends IBaseModel>(key: string): TModel;
store : Verilen key bilgisine göre iligili storage'a value datasını kayit eder.
store(key: string, value: any): void;
remove : Verilen key bilgisine göre ilgili storage'dan datayi siler.
remove(key: string): void;
###Properties
localStorage : LocalStorage kullanılarak caching işlemlerini yapar
localStorage: ICacher;
sessionStorage :: SessionStorage kullanarak caching işlemlerini yapar
sessionStorage: ICacher;
cookieStorage : Cookie kullanarak caching işlemlerini yapar.
cookieStorage: ICacher;
#Validators
Bu servis controller üzerindeki client validasyon işlemleri için kullanılır.BaseCrudController'da this.validators
olarak erişilebilir.
Detaylı Validasyon işlemleri için Validasyon sayfasını inceleyebilirsiniz.
###Properties & Methods
validators: [Array] Eklenen tüm validasyon'ların listesi
validators: IValidationItem[];
addValidation : [Method] Yeni validasyon ekleme.
addValidation(item: IValidationItem): IValidators;
####Parameters item : IValidationItem Eklenecek validasyon objesi
Return Type : IValidators
getValidation : [Method] Validator adına göre validasoyn bilgisini getirir.
getValidation(name: string): IValidationItem;
removeValidation : [Method] Validasyon adina göre ilgili validasyonu siler.
removeValidation(name: string): void;
###IValidationItem
Validasyon bilgisidir.Yapısı aşagidaki gibidir.
func: [Event] Validasyon yapılacak event.TriggerOn enum bilgisine göre farkli anlarda çalışabilir.Zorunludur
func: (args: IValidationArgs) => IP<IValidationResult> | IP<any>;
####Parameters args : IValidationArgs Validasyon ile ilgili argument bilgileri Return Type: IValidationResult Validasyon mesajini içeren obje
name : Validasyon adı.Zorunlu değildir
name?: string;
Önemli : Eger ilgili validasyon rtValidator directive ile kullanılacak ise name attr zorunludur
enabled : Validasyon enable/disable.Varsayilan true dur
enabled?: boolean;
order : Validasyon çalışma sırası.Varsayilan ekleme sırasıdır.Zorunlu degildir
order?: number;
crudFlag : Validasyonun controller'da hangi modlarda çalişacagi bilgisidir.Create,Update,Delete degerleri alabilir.Eger validasyon triggerOn "Action" içeriyorsa anlamlıdır.
crudFlag?: CrudType;
triggerOn: Validasyonun hangi zamanlar tetiklenecegini ifade eder.Action,Blur ve Change degerlerini alabilir.Varsayılan Action ve Blur'dur.
triggerOn?: TriggerOn;
Önemli :Blur ve Change trigger secenekleri sadece rtValidator ile kullanılmaktadır
###IValidationArgs Validasyon methoduna parametre olrak geçilir ve validasyon ile ilgili bilgileri verir.
validator: IValidationItem Çalişan validasyon objesi modelValue?: any Blur veya Change triggerOn tiplerinde ilgili control icersindeki value bilgisidir triggeredOn: TriggerOn TriggerOn bilgisi
Önemli : Eger validasyon Blur veya Change trigger tipinde çalişiyorsa modelValue bilgisi dolu gelicektir.Action trigger tipinde çalişiyor ise ilgili value bilglsi
this.model
üzerinden alinmalidir.Aşagidaki şekilde model bilgisi alınabilir.
const value = args.triggeredOn === TriggerOn.Action ? this.model.shortcut : args.modelValue;
###IValidationResult Validasyon method sonucunda validasyon error mesaj bilgisini implemente eden interface.
message : Validasyon mesajı
message?: string;
messageI18N : Validasyon mesaji localizaed key bilgisi
messageI18N?: string;
#Reporting
SSRS üzerindeki RDF raporlarını göstermeye/indirmeyi sağlayan servis."Reporting" adıyla inject edilebilir.Interface tipi IReporting olmali
Reporting hakkında daha fazla bilgi için SSRS Reporting kısmına bakınız
###Methods
showReport : Parametrelerde belirtilen RDF raporunu modal ekranda açmak icin kullanılır
showReport<TReportFilter extends IBaseReportFilter>(options: IReportViewerOptions<TReportFilter>): ng.IPromise<any>;
Ayrıca Dialogs servisindeki showReport methodunu inceleyebilirsiniz
####Parametreler options: IReportViewerOptions Rapor'u modal ekranda acmak icin gerekli olan parametreler.IDialogOptions interface'inden miras alir.
- reportName: string RDF rapor adi
- filter?: TFilter Rapor filtresi
downloadReport: Parametrelerde belirtilen rdf raporunu download etmek icin kullanılır.
downloadReport<TReportFilter extends IBaseReportFilter>(options: IReportDownloadOptions<TReportFilter>): ng.IPromise<any>;
####Parametreler options : IReportDownloadOptions Rapor download yapılabilmesi için gerekli olan ayarlar.
- reportName: string RDF rapor adi
- displayReportName: string İndirilen dosya'nın user-friendly adi.
- filter?: TFilter Rapor filtresi
- reportExportType?: ReportExportTypes Raporun hangi formatta download edilecegi bilgisidir,
None, Excel, Pdf, Html, Word, Excelopenxml
degerlerini alabilir.Varsyailan Pdf'dir - reportDispositonType?: ReportDispositonTypes Raporun Inline, Attachment şeklinde açalicagi bilgisi.Varsayilan Attachment'tir.
Örnek
Raporu EXCEL olarak download
this.reporting.downloadReport({
reportName: "TeklifListesi",
displayReportName: this.localization.getLocal('rapor.teklifListesixls'),
filter: this.reportFilter,
reportExportType: ReportExportTypes.Excel,
});
Raporu PDF olarak inline açma
this.reporting.downloadReport({
reportName: "TeklifListesi",
displayReportName: this.localization.getLocal('rapor.teklifListesixls'),
filter: this.reportFilter,
reportDispositonType:ReportDispositonTypes.Inline
});
#Localization
Bu servis localization ile ilgili işlemleri yapmak için kullanılan servistir.Contoller üzerinde this.localization
şeklinde erişilebilir.
Localization ile ayrıntılı bilgi için Localization sayfasına bakabilirsiniz
###Properties & Methods
currentLanguage: [obj] Aktif dil bilgisi ile ilgili bilgileri verir
currentLanguage: ILanguage;
getLocal: [Method] Verilen key bilgisine göre aktif dil karşılığını verir
getLocal(key: string): string;
getLocal: [Method] Verilen key bilgisine göre aktif dil karşılığını format'lı olarak verir
getLocal(key: string, ...params: string[]): string;
Örnek:
//rota.confirmdeleteitem = 'Are you sure to delete {0} ?'
this.localization.getLocal('rota.confirmdeleteitem','Acme Company');
getLocal : Verilen key bilgsine göre aktif dil karşışığını local context'e (scope) göre parse ederek verir.
getLocal(key: string, scope: any): string;
Örnek:
//rota.confirmdeleteitem = 'Are you sure to delete {{message}} ?'
getLocal('rota.confirmdeleteitem',{message:'Acme Company'});
#SignalR
Anlık veri transferi için kullanılan Hub obje'sidir.Server tarafindaki Hub'lar ile birlikte çalışır.
Öncelikle Hub sınıfını kullanacagimiz Controller/Api'te import etmemiz gerekiyor
import {Hub} from "rota/services/signalr.hub";
Controller member olarak Hub objemizi tanımlıyoruz
menuHub: IHub<IMenuHubServerMethods, IMenuHubServerMethods>;
Artık Hub objemizi create edebiliriz.
this.hub = new Hub("[server hub adi]",[options]);
###Properties & Methods
constructor: Yeni bir Hub sınıfı yaratır
constructor(hubName: string, private options: IHubOptions<TListeners>)
####Parametreler
- hubName: string Server tarafta konuşagi HUB adı.Zorunlu
- options :IHubOptions Server communication ile ilgili options bilgileri.Zorunlu degil.
listeners : Client tarafta server tarafindan tetiklenecek listener method interface'i
listeners?: TListeners;
methods: Server tarafta call edilecek method name bilgisi
methods?: Array<string>;
Örnek
Client
Ortak bir sınıf methodu
interface IMenuHubServerMethods {
menuEklendi: (model: IMenu) => void;
}
Server tarafin call edeceği client listener methodu tanımlıyoruz
this.menuHub = new Hub<IMenuHubServerMethods, IMenuHubServerMethods>("menuHub",
{
methods: ["menuEklendi"]
});
Crud controller'da model kayit edildikten sonra server tarafta menuEklendi mehtodu call ediliyor
afterSaveModel(options: ISaveOptions): void {
if (options.isNew) {
this.menuHub.methods.menuEklendi(this.model.toJson());
}
}
Dinleyen sayfa konfigurasyonu da aşagidaki şekilde.menuEklendi methodu çagirilince gelen datayi listeye ekliyor.
this.menuHub = new Hub<IMenuHubServerMethods, IMenuHubServerMethods>("menuHub",
{
listeners: {
menuEklendi: menu => {
this.$scope.$apply(() => {
this.gridData.unshift(menu);
this.logger.toastr.info({ message: 'Yeni menu eklendi' });
});
}
}
});
Server
[HubName("menuHub")]
public class MenuHub : Hub
{
public void MenuEklendi(MenuCrudDtoModel model)
{
Clients.Others.menuEklendi(model);
}
}
#Common
Bu servis sık kullanılan utility fonksiyonlarını içeren helper servisidir.this.common
olarak Controller/Api lerden erişilebilir.Sık kullanılan methodlar aşagidaki gibidir.
##Methods
isNullOrEmpty : Verilen value string bilgisinin null/undefined veya boş string olma durumunu kontrol eder
isNullOrEmpty(value: string): boolean;
isAssigned : Verilen objenin truty/falsy durumunu kontrol eder.
isAssigned(value: any): boolean;
isNotEmptyObject: Verilen value değerinin boş veya falsy object ({}) olma durumunu kontrol eder.
isNotEmptyObject(value: any): boolean;
promise : Resolved Promise döndürür.Istenirse generic tip belirtilebilir.
promise<T>(p?: T): ng.IPromise<T>;
Örnek:
this.common.promise<IUser>({userName:"sercan.gurbuz"});
rejectedPromise : Rejected Promise döndürür..Istenirse generic tip belirtilebilir.
rejectedPromise<T>(reason?: T): ng.IPromise<T>;
Örnek :
this.common.rejectedPromise<IValidationResult>({message:"Hatalı giriş.!"});
**newCrudModel :**Yeni crud model bilgisi yaratır.
newCrudModel<TModel extends IBaseCrudModel>(...props: any[]): TModel;
Örnek:
const userModel = this.common.newCrudModel<IUser>({name:"sercan"});
//userModel bilgisi
{
id:0,
name:"sercan",
modelState : 1//ModelState.Detached
}
extend: Verilen source objesini,extensions parametreleri ile extend eder.
extend<TSource>(source: TSource, ...extensions: any[]): TSource;
###Guard Methodlar
isString : Verilen parametrenin String olma durumuna göre boolean döndürür
isString(value: any): value is string;
**isArray :**Verilen parametrenin Array olma durumuna göre boolean döndürür
isArray<T>(value: any): value is Array<T>;
isFunction : Verilen parametrenin Function olma durumuna göre boolean döndürür
isFunction(value: any): value is Function;
isDefined : Verilen parametrenin Undefined olma durumuna göre boolean döndürür
isDefined<T>(value: any): value is T;
getRandomNumber : Unique bir değer döndürür
getRandomNumber(): string;
###Directives rtSelect, rtMultiSelect, rtDatePicker, rtNumber, rtForm, rtGrid, rtFocus, rtButton, rtCrudButtons, rtListButtons, rtReportButtons, rtPanel, rtTree, rtEditor, rtFileUpload, rtMultiFileUpload, rtDateRange, rtCallout, rtValidator, rtTabs, rtInclude ###Controllers BaseController, BaseModelController, BaseCrudController, BaseListController BaseModalControler ###Apis BaseApi BaseCrudApi
###Services Logger, Routing, Security, Dialogs, Caching, Validators, Reporting, Localization, SignalR, Common