add args to function

master
inpos 2018-08-11 16:25:59 +03:00
parent 6727d36b1a
commit 9192cd6753
3 changed files with 6 additions and 6 deletions

View File

@ -15,7 +15,7 @@ class MyApplication(cp.ExtApplication):
wnd = Ext.create('widget.window', {'title': 'My Window', 'width': 300, 'height': 250, wnd = Ext.create('widget.window', {'title': 'My Window', 'width': 300, 'height': 250,
'items': [{'xtype': 'button', 'text': 'Click Here', 'handler': button_click}], 'items': [{'xtype': 'button', 'text': 'Click Here', 'handler': button_click}],
'buttons': [ 'buttons': [
{'text': 'OK', 'handler': js.FuncWithParams(ok_click, {'arg1': 1, 'arg2': 'val2', 'arg3': js.cli.this.id})}, {'text': 'OK', 'handler': js.FuncWithParams(ok_click, params = {'arg1': 1, 'arg2': 'val2', 'arg3': js.cli.this.id})},
{'text': 'Close', 'handler': js.function('this.up(\'window\').close()')}]}) {'text': 'Close', 'handler': js.function('this.up(\'window\').close()')}]})
wnd.show() wnd.show()
wnd.setHeight(200) wnd.setHeight(200)

View File

@ -1,4 +1,3 @@
from . import js from . import js

View File

@ -1,4 +1,3 @@
import types import types
import json import json
@ -14,9 +13,10 @@ class STUB:
stub_class = STUB() stub_class = STUB()
class FuncWithParams: class FuncWithParams:
def __init__(self, func, params): def __init__(self, func, args = [], params = {}):
self.func = func self.func = func
self.params = params self.params = params
self.args = args
def list2extjs(l): def list2extjs(l):
return '[ %s ]' % ', '.join([encode(v) for v in l]) return '[ %s ]' % ', '.join([encode(v) for v in l])
@ -43,7 +43,7 @@ def encode(o):
elif isinstance(o, types.MethodType): elif isinstance(o, types.MethodType):
return str(function(js_ajax(o))) return str(function(js_ajax(o)))
elif isinstance(o, FuncWithParams): elif isinstance(o, FuncWithParams):
return str(function(js_ajax(o.func, o.params))) return str(function(js_ajax(o.func, o.params), o.args))
elif isinstance(o, JsFunction): elif isinstance(o, JsFunction):
return str(o) return str(o)
elif isinstance(o, dict): elif isinstance(o, dict):
@ -56,13 +56,14 @@ def encode(o):
class JsBlock: class JsBlock:
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
self.code = args[0] self.code = args[0]
self.args = args[1] if len(args) > 1 else []
def __str__(self): def __str__(self):
return self.code return self.code
class JsFunction(JsBlock): class JsFunction(JsBlock):
def __str__(self): def __str__(self):
return 'function () { %s }' % self.code return 'function (%s) { %s }' % (','.join(self.args), self.code)
block = JsBlock block = JsBlock
func = function = JsFunction func = function = JsFunction