// tslint:disable
// Autogenerated file
import { BaseModel } from 'modules/api/angular/cmf-rpc-common';

import { TObjRpc, TObjStore, TDeprecatedCmfModelRpc } from 'modules/api/angular/classes/';

import { fields_index } from '__autogen_fields';

{#- name, call, length, caller - нельзя использовать как имена статических свойств классов #}
{%- macro escape_static_name(name) -%}
    {{ name+'_' if name in ('name', 'call', 'length', 'caller') else name }}
{%- endmacro %}


{% for model in models_list if model.class_name != 'BaseModel' -%}
export class {{ model.class_name }} extends BaseModel {
// Meta static
static deprecatedRpc: TDeprecatedCmfModelRpc<{{ model.class_name }}>;
static objRpc: TObjRpc<{{ model.class_name }}>;
static objStore: TObjStore<{{ model.class_name }}>;
{#-    {%- for meta_name, meta_value in model.ui_meta.items() if meta_name != 'fields' %}#}
{#-    static {{ meta_name }} = {{ meta_value | tojson }};#}
{#-    {%- endfor %}#}
{#-#}
// Fields classes
{%- for field_cls in model.fields.values() if not field_cls.class_name.startswith('cf_') %}
static {{ escape_static_name(field_cls.class_name) }} = fields_index["{{ field_hash(field_cls) }}"];
{%- endfor %}

// Meta copy (or getter?)
ui_form_custom = null;  {#- Не записываем кастом мету в автоген, фронт не должен зависеть от кастома #}
{%- for meta_name, meta_value in model.ui_meta.items() if meta_name not in ('fields', 'ui_form_custom') %}
{{ meta_name }} = {{ meta_value | tojson }};
{%- endfor %}
className = '{{ model.class_name }}';  // fixme
static className = '{{ model.class_name }}';

{#-    // Fields#}
{#-    {%- for field_cls in model.fields.values() %}#}
{#-    {{ field_cls.class_name }} = new fields_index["{{ field_hash(field_cls) }}"](this, "{{ field_cls.class_name }}");#}
{#-    {{ field_cls.class_name }} = new (this.constructor as any).{{ escape_static_name(field_cls.class_name) }}(this, field_cls.class_name);#}
{#-        ?: CmfField;#}
{#-    //  = new (this.constructor as any).{{ escape_static_name(field_cls.class_name) }}(this);#}
{#-    {%- endfor %}#}
}


{% endfor %}

export class CmfJsonRpcServiceBase {
    models: any = {
{%- for model in models_list if model.class_name != 'BaseModel' %}
        {{ model.class_name }},
{%- endfor %}
    };

{% for model in models_list if model.class_name != 'BaseModel' %}
    {{ model.class_name }}: TDeprecatedCmfModelRpc<{{ model.class_name }}>;
{%- endfor %}
}

export const UI_NAME_TO_CMF_NAME = {{ models_by_ui_name|tojson }};
export const CMF_NAME_TO_UI_NAME = {{ ui_name_by_models|tojson }};
