def __init__(self, data, js_src, data_schema=None, profile=False): self._js_src, self._data_schema, self._data = js_src, data_schema, data fnc_name = JsFncsRecords.JsFilter.__name__ fnc_pmts = ["data"] + (list(JsFncsRecords.JsFilter.pmts) or []) if not fnc_name in self._js_src.get('js', {}).get('functions', {}): self._js_src.setdefault('js', {}).setdefault( 'functions', {})[fnc_name] = { 'content': "var result = []; %s;return result" % JsUtils.cleanFncs(JsFncsRecords.JsFilter.content), 'pmt': fnc_pmts } self._data_schema['filters'] = []
def url(self): """ :return: """ fnc_name = JsFncsRecords.JsToUrl.__name__ fnc_pmts = ["data"] for p in getattr(JsFncsRecords.JsToUrl, 'params', []): fnc_pmts.append(p) if not fnc_name in self._js_src.get('functions', {}): content = JsUtils.cleanFncs(JsFncsRecords.JsToUrl.value) self._js_src.setdefault('functions', {})[fnc_name] = { 'content': "%s; return result" % content, 'pmt': fnc_pmts } return fnc_name
def __register_records_fnc(self, fnc_name, fnc_def, fnc_pmts=None): """ This function will attach to the report object only the javascript functions used during the report :param fnc_name: :param fnc_def: :return: """ fnc_pmts = ["data"] + (fnc_pmts or []) if not fnc_name in self._js_src.get('js', {}).get('functions', {}): self._js_src.setdefault('js', {}).setdefault( 'functions', {})[fnc_name] = { 'content': "var result = []; %s;return result" % JsUtils.cleanFncs(fnc_def), 'pmt': fnc_pmts }