public static void RegisterJavascriptTranslations(JavascriptTranslatableMethodCollection methods) { methods.AddMethodTranslator(typeof(BindingApi), nameof(RefreshOnChange), new GenericMethodCompiler(a => new JsIdentifierExpression("dotvvm").Member("apiRefreshOn").Invoke( a[1].WithAnnotation(ShouldBeObservableAnnotation.Instance), a[2].EnsureObservableWrapped()) .WithAnnotation(a[1].Annotation <ResultIsObservableAnnotation>()) .WithAnnotation(a[1].Annotation <ViewModelInfoAnnotation>()) .WithAnnotation(a[1].Annotation <MayBeNullAnnotation>()) )); methods.AddMethodTranslator(typeof(BindingApi), nameof(RefreshOnEvent), new GenericMethodCompiler(a => new JsIdentifierExpression("dotvvm").Member("apiRefreshOn").Invoke( a[1].WithAnnotation(ShouldBeObservableAnnotation.Instance), new JsIdentifierExpression("dotvvm").Member("eventHub").Member("get").Invoke(a[2])) .WithAnnotation(a[1].Annotation <ResultIsObservableAnnotation>()) .WithAnnotation(a[1].Annotation <ViewModelInfoAnnotation>()) .WithAnnotation(a[1].Annotation <MayBeNullAnnotation>()) )); methods.AddMethodTranslator(typeof(BindingApi), nameof(PushEvent), new GenericMethodCompiler(a => new JsIdentifierExpression("dotvvm").Member("eventHub").Member("notify").Invoke(a[1]) )); }
internal static void RegisterJavascriptTranslations(JavascriptTranslatableMethodCollection methods) { methods.AddPropertyGetterTranslator(typeof(BindingPageInfo), nameof(EvaluatingOnServer), new GenericMethodCompiler(_ => new JsLiteral(false))); methods.AddPropertyGetterTranslator(typeof(BindingPageInfo), nameof(EvaluatingOnClient), new GenericMethodCompiler(_ => new JsLiteral(true))); methods.AddPropertyGetterTranslator(typeof(BindingPageInfo), nameof(IsPostbackRunning), new GenericMethodCompiler(_ => new JsIdentifierExpression("dotvvm").Member("isPostbackRunning").Invoke())); }
internal static void RegisterJavascriptTranslations(JavascriptTranslatableMethodCollection methods) { methods.AddPropertyGetterTranslator(typeof(BindingCollectionInfo), nameof(Index), new GenericMethodCompiler(_ => new JsSymbolicParameter(JavascriptTranslator.CurrentIndexParameter))); methods.AddPropertyGetterTranslator(typeof(BindingCollectionInfo), nameof(IsFirst), new GenericMethodCompiler(_ => new JsBinaryExpression(new JsSymbolicParameter(JavascriptTranslator.CurrentIndexParameter), BinaryOperatorType.Equal, new JsLiteral(0)))); methods.AddPropertyGetterTranslator(typeof(BindingCollectionInfo), nameof(IsOdd), new GenericMethodCompiler(_ => new JsBinaryExpression(new JsBinaryExpression(new JsSymbolicParameter(JavascriptTranslator.CurrentIndexParameter), BinaryOperatorType.Modulo, new JsLiteral(2)), BinaryOperatorType.Equal, new JsLiteral(1)))); methods.AddPropertyGetterTranslator(typeof(BindingCollectionInfo), nameof(IsEven), new GenericMethodCompiler(_ => new JsBinaryExpression(new JsBinaryExpression(new JsSymbolicParameter(JavascriptTranslator.CurrentIndexParameter), BinaryOperatorType.Modulo, new JsLiteral(2)), BinaryOperatorType.Equal, new JsLiteral(0)))); }
internal static void RegisterJavascriptTranslations(JavascriptTranslatableMethodCollection methods) { IJavascriptMethodTranslator memberAccess(string name) => new GenericMethodCompiler( builder: a => a[0].CastTo <JsObjectExpression>().Properties.Single(p => p.Name == name).Expression.Clone(), check: (_m, a, _a) => a.GetParameterAnnotation() is BindingParameterAnnotation ann && ann.ExtensionParameter is BindingCollectionInfoExtensionParameter ); methods.AddPropertyGetterTranslator(typeof(BindingCollectionInfo), nameof(Index), memberAccess(nameof(Index))); methods.AddPropertyGetterTranslator(typeof(BindingCollectionInfo), nameof(IsFirst), memberAccess(nameof(IsFirst))); methods.AddPropertyGetterTranslator(typeof(BindingCollectionInfo), nameof(IsOdd), memberAccess(nameof(IsOdd))); methods.AddPropertyGetterTranslator(typeof(BindingCollectionInfo), nameof(IsEven), memberAccess(nameof(IsEven))); }
public static void RegisterJavascriptTranslations(JavascriptTranslatableMethodCollection methods) { methods.AddMethodTranslator(typeof(LocalStorageInfo), nameof(Get), new GenericMethodCompiler((a, m) => new JsIdentifierExpression("dotvvm").Member("pwa").Member("get").Invoke(a[1]) .WithAnnotation(MayBeNullAnnotation.Instance) .WithAnnotation(new ViewModelInfoAnnotation(m.ReturnType)) )); methods.AddMethodTranslator(typeof(LocalStorageInfo), nameof(Set), new GenericMethodCompiler(a => new JsIdentifierExpression("dotvvm").Member("pwa").Member("set").Invoke( a[1], a[2].WithAnnotation(ShouldBeObservableAnnotation.Instance) ) )); }
public JavascriptTranslatorConfiguration() { Translators.Add(MethodCollection = new JavascriptTranslatableMethodCollection()); }