コード例 #1
0
 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])
                                                           ));
 }
コード例 #2
0
 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()));
 }
コード例 #3
0
 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))));
 }
コード例 #4
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)));
        }
コード例 #5
0
 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)
                                                               )
                                                           ));
 }
コード例 #6
0
 public JavascriptTranslatorConfiguration()
 {
     Translators.Add(MethodCollection = new JavascriptTranslatableMethodCollection());
 }