﻿export class TfabricaCrudField {

    public position: number;
    public display: boolean;
    public label: string;
    public name: string;
    public type: string;
    public style: string;

    public conversionFunction: string;

    public isUpdate: boolean;
    public isKey: boolean;

    public connectionString: string;
    public valuesSelect: string;

    public fieldValueSelect: string;
    public fieldLabelSelect: string;

    public static compare(a: TfabricaCrudField, b: TfabricaCrudField) {
        if (a.position > b.position) return 1;
        else return -1;
    }

    public getStyle() {
        try {
            let s = this.style.replace(/\\n/g, "\\n")
                .replace(/\\'/g, "\\'")
                .replace(/\\"/g, '\\"')
                .replace(/\\&/g, "\\&")
                .replace(/\\r/g, "\\r")
                .replace(/\\t/g, "\\t")
                .replace(/\\b/g, "\\b")
                .replace(/\\f/g, "\\f");
            // remove non-printable and other non-valid JSON chars
            s = s.replace(/[\u0000-\u0019]+/g, "");
            //console.log(s);

            return JSON.parse(s);
        } catch(Err) {
            return "";
        }
    }

}