/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 7 - present ĠRobert ĠJar os Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ package Ġpl . tre k soft . k vision . tab ulator Ċ Ċ import Ġkotlinx . serialization . Implicit Reflection Serializer Ċ import Ġkotlinx . serialization . stringify Ċ import Ġpl . tre k soft . k vision . core . Container Ċ import Ġpl . tre k soft . k vision . remote . Json Rpc Request Ċ import Ġpl . tre k soft . k vision . remote . KV Service Manager Ċ import Ġpl . tre k soft . k vision . remote . Remote Data Ċ import Ġpl . tre k soft . k vision . remote . Remote Filter Ċ import Ġpl . tre k soft . k vision . remote . Remote Sorter Ċ import Ġpl . tre k soft . k vision . rest . HttpMethod Ċ import Ġpl . tre k soft . k vision . rest . RestClient Ċ import Ġpl . tre k soft . k vision . table . Table Type Ċ import Ġpl . tre k soft . k vision . utils . JSON Ċ Ċ /** Ċ Ġ* ĠTab ulator Ġcomponent Ġconnected Ġto Ġthe Ġmulti platform Ġservice . Ċ Ġ* Ċ Ġ* Ġ@ constructor Ċ Ġ* Ġ@ param ĠT Ġtype Ġof Ġrow Ġdata Ċ Ġ* Ġ@ param ĠE Ġtype Ġof Ġservice Ġmanager Ċ Ġ* Ġ@ param Ġservice Manager Ġmulti platform Ġservice Ġmanager Ċ Ġ* Ġ@ param Ġfunction Ġmulti platform Ġservice Ġmethod Ġreturning Ġtab ulator Ġrows Ġdata Ċ Ġ* Ġ@ param Ġoptions Ġtab ulator Ġoptions Ċ Ġ* Ġ@ param Ġtypes Ġa Ġset Ġof Ġtable Ġtypes Ċ Ġ* Ġ@ param Ġclasses Ġa Ġset Ġof ĠCSS Ġclass Ġnames Ċ Ġ*/ Ċ @ Use Experimental ( Implicit Reflection Serializer :: class ) Ċ open Ġclass ĠTab ulator Remote < T Ġ: ĠAny , ĠE Ġ: ĠAny >( ĊĠĠĠ Ġservice Manager : ĠK V Service Manager < E >, ĊĠĠĠ Ġfunction : Ġsuspend ĠE .( Int ?, ĠInt ?, ĠList < Remote Filter > ?, ĠList < Remote Sorter > ?) Ġ-> ĠRemote Data < T >, ĊĠĠĠ Ġoptions : ĠTab ulator Options < T > Ġ= ĠTab ulator Options (), ĊĠĠĠ Ġtypes : ĠSet < Table Type > Ġ= Ġset Of (), ĊĠĠĠ Ġclasses : ĠSet < String > Ġ= Ġset Of () Ċ ) Ġ: ĠTab ulator < T >( null , Ġfalse , Ġoptions , Ġtypes , Ġclasses ) Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ( url , Ġmethod ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice Manager . get Calls ()[ function . toString (). replace ("\\ s ". to Regex (), Ġ" ")] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalStateException (" Function Ġnot Ġspecified !") ĊĊĠĠĠĠĠĠĠ Ġval Ġrest Client Ġ= ĠRest Client () ĊĠĠĠĠĠĠĠ Ġoptions . ajax URL Ġ= Ġurl ĊĠĠĠĠĠĠĠ Ġoptions . ajax Request Func Ġ= Ġ{ Ġ_, Ġ_, Ġparams Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpage Ġ= Ġparams . page ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġparams . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" Unsafe Cast From Dynamic ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilters Ġ= Ġif Ġ( params . filters Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin . js . JSON . stringify ( params . filters ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" Unsafe Cast From Dynamic ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsort ers Ġ= Ġif Ġ( params . sort ers Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin . js . JSON . stringify ( params . sort ers ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" Unsafe Cast From Dynamic ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠJSON . plain . stringify ( Json Rpc Request ( 0 , Ġurl , ĠlistOf ( page , Ġsize , Ġfilters , Ġsort ers ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrest Client . remote Call ( url , Ġdata , Ġmethod Ġ= ĠHttpMethod . valueOf ( method . name )). then Ġ{ Ġr : Ġdynamic Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġkotlin . js . JSON . parse < dynamic >( r . result Ġas ĠString ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" Unsafe Cast From Dynamic ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( page Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠDSL Ġbuilder Ġextension Ġfunction . Ċ Ġ* Ċ Ġ* ĠIt Ġtakes Ġthe Ġsame Ġparameters Ġas Ġthe Ġconstructor Ġof Ġthe Ġbuilt Ġcomponent . Ċ Ġ*/ Ċ fun Ġ< T Ġ: ĠAny , ĠE Ġ: ĠAny > ĠContainer . tab ulator Remote ( ĊĠĠĠ Ġservice Manager : ĠK V Service Manager < E >, ĊĠĠĠ Ġfunction : Ġsuspend ĠE .( Int ?, ĠInt ?, ĠList < Remote Filter > ?, ĠList < Remote Sorter > ?) Ġ-> ĠRemote Data < T >, ĊĠĠĠ Ġoptions : ĠTab ulator Options < T > Ġ= ĠTab ulator Options (), ĊĠĠĠ Ġtypes : ĠSet < Table Type > Ġ= Ġset Of (), ĊĠĠĠ Ġclasses : ĠSet < String > Ġ= Ġset Of (), ĊĠĠĠ Ġinit : Ġ( Tab ulator Remote < T , ĠE >. () Ġ-> ĠUnit )? Ġ= Ġnull Ċ ): ĠTab ulator Remote < T , ĠE > Ġ{ ĊĠĠĠ Ġval Ġtab ulator Remote Ġ= ĠTab ulator Remote ( service Manager , Ġfunction , Ġoptions , Ġtypes , Ġclasses ) ĊĠĠĠ Ġinit ?. invoke ( tab ulator Remote ) ĊĠĠĠ Ġthis . add ( tab ulator Remote ) ĊĠĠĠ Ġreturn Ġtab ulator Remote Ċ } Ċ