Skip to content
This repository has been archived by the owner on Nov 22, 2018. It is now read-only.

Service'ler

Sercan Gurbuz edited this page Dec 28, 2016 · 15 revisions

#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.

  1. Toastr
  2. Notification
  3. Console

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?'});

enter image description here

###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 !'});

enter image description here

###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

enter image description here

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

  1. Authority
  2. ClientId
  3. 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.

enter image description here

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' });

enter image description here

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' });

enter image description here

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;

enter image description here

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' });

enter image description here

Ö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' });

enter image description here

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, Excelopenxmldegerlerini 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;