Source

common/global.js

/**
 * 
 * ## Namespace for misc global variables
 * 
 * @namespace
 * 
 */
kiss.addToModule("global", {

    // Authentication
    tokens: {},
    refreshTokens: {},

    // Ajax max retries
    // Prevents refreshToken loops for invalid tokens
    ajaxRetries: 0,
    ajaxMaxRetries: 3,

    // Models cache
    models: [],

    // Exiting view types
    viewTypes: [{
            name: "datatable",
            icon: "fas fa-th-list",
            description: "#datatable view"
        }, {
            name: "calendar",
            icon: "far fa-calendar",
            description: "#calendar view"
        },
        {
            name: "kanban",
            icon: "fab fa-trello",
            description: "#kanban view"
        },
        {
            name: "timeline",
            icon: "fas fa-align-left",
            description: "#timeline view"
        },
        {
            name: "gallery",
            icon: "fas fa-image",
            description: "#gallery view"
        },
        {
            name: "map",
            icon: "fas fa-map",
            description: "#map view"
        },
        {
            name: "chart",
            icon: "fas fa-chart-line",
            description: "#chart view"
        },
        {
            name: "dashboard",
            icon: "fas fa-tachometer-alt",
            description: "#dashboard view"
        }
    ],

    /**
     * Get the icon for a view type
     * 
     * @ignore
     * @param {string} type 
     * @returns {string} icon
     */
    getViewIcon(type) {
        const view = this.viewTypes.find(v => v.name == type)
        if (view) return view.icon
        return "fas fa-th-list"
    },

    // Existing chart types
    chartTypes: [{
            name: "bar",
            icon: "fas fa-chart-bar",
        }, {
            name: "line",
            icon: "fas fa-chart-line",
        },
        {
            name: "pie",
            icon: "fas fa-chart-pie",
        },
        {
            name: "doughnut",
            icon: "fab fa-osi",
        },
        {
            name: "number",
            icon: "fas fa-hashtag",
        }
    ],

    /**
     * Get the icon for a chart type
     * 
     * @ignore
     * @param {string} type 
     * @returns {string} icon
     */
    getChartIcon(type) {
        const chart = this.chartTypes.find(c => c.name == type)
        if (chart) return chart.icon
        return "fas fa-chart-line"
    },

    // Existing field types
    fieldTypes: [{
            value: "text",
            label: "text",
            icon: "fas fa-font",
            dataType: "text"
        },
        {
            value: "textarea",
            label: "paragraph",
            icon: "fas fa-comment-dots",
            dataType: "text"
        },
        {
            value: "richTextField",
            label: "rich text",
            icon: "fas fa-align-left",
            dataType: "text"
        },
        {
            value: "aiTextarea",
            label: "AI paragraph",
            icon: "far fa-lightbulb",
            dataType: "text"
        },
        {
            value: "number",
            label: "number",
            icon: "fas fa-hashtag",
            dataType: "number"
        },
        {
            value: "date",
            label: "date",
            icon: "fas fa-calendar",
            dataType: "date"
        },
        {
            value: "time",
            label: "time",
            icon: "fas fa-clock",
            dataType: "text"
        },
        {
            value: "select",
            label: "#select",
            icon: "fas fa-mouse-pointer",
            dataType: "text"
        },
        {
            value: "selectViewColumn",
            label: "#select view column",
            icon: "fas fa-th-list",
            dataType: "text"
        },
        {
            value: "selectViewColumns",
            label: "#select view columns",
            icon: "fas fa-table",
            dataType: "text"
        },
        {
            value: "checkbox",
            label: "checkbox",
            icon: "fas fa-check-square",
            dataType: "boolean"
        },
        {
            value: "attachment",
            label: "attachment",
            icon: "fas fa-paperclip"
        },
        {
            value: "aiImage",
            label: "AI image",
            icon: "fas fa-images"
        },
        {
            value: "directory",
            label: "collaborators",
            icon: "fas fa-users"
        },
        {
            value: "slider",
            label: "slider",
            icon: "fas fa-sliders-h"
        },
        {
            value: "rating",
            label: "rating",
            icon: "fas fa-star"
        },
        {
            value: "color",
            label: "color",
            icon: "fas fa-palette"
        },
        {
            value: "colorPicker",
            label: "color picker",
            icon: "fas fa-palette"
        },
        {
            value: "icon",
            label: "icon",
            icon: "far fa-heart"
        },
        {
            value: "iconPicker",
            label: "icon picker",
            icon: "far fa-heart"
        },
        {
            value: "password",
            label: "password",
            icon: "fas fa-key"
        },
        {
            value: "codeEditor",
            label: "code editor",
            icon: "fas fa-code"
        },
        {
            value: "mapField",
            label: "map field",
            icon: "fas fa-map"
        },
        // Fields for linked records (relationships)
        {
            value: "link",
            label: "link to another table",
            icon: "fas fa-link"
        },
        {
            value: "lookup",
            label: "lookup a value on linked records",
            icon: "fas fa-eye"
        },
        {
            value: "summary",
            label: "summarize data from linked records",
            icon: "fas fa-calculator"
        }
    ],

    // Existing element types
    elementTypes: [{
            value: "html",
            label: "HTML",
            icon: "fas fa-bars"
        },
        {
            value: "image",
            label: "image",
            icon: "fas fa-image"
        },
        {
            value: "button",
            label: "button",
            icon: "fas fa-square"
        }
    ],

    // Used to auto-increment component ids
    componentCount: 0,

    palette: [
        // Palette 1
        "00CCEE", "00AAEE", "0075FF", "0088CC", "004499", "007766", "008833", "00AA99", "55CC00", "88CC00", "FFD139", "FFAA00", "F77D05", "B22222", "CC0055", "ED3757", "EE00AA", "CC0088", "8833EE", "772288",
        // Palette 2
        "77DDEE", "77CCEE", "429AFF", "66AACC", "447799", "537772", "528866", "6FAAA4", "91CC66", "C3E673", "EACD64", "FFD480", "CCA266", "B25959", "CC6690", "FF8080", "EE77CC", "AD77EE", "7B68EE", "815F88",
        // Palette 3
        "BEDBE0", "B4DDED", "87BFFF", "A1BDCC", "6B8699", "6E8777", "899E91", "8AA8A4", "BACCAD", "D0D8BC", "E2D7A1", "FFE6B5", "D8C4A8", "B28C8C", "DA9BB5", "FFBBBB", "F5BCE5", "C6ADE3", "ABA2E1", "B19AB5",
        // Palette 4 (grayscale)
        "FFFFFF", "FAFAFA", "F0F0F0", "EEEEEE", "DDDDDD", "DADADA", "D0D0D0", "CCCCCC", "C0C0C0", "BBBBBB", "AAAAAA", "999999", "888888", "777777", "666666", "555555", "444444", "333333", "222222", "000000"
    ],

    /**
     * All ISO 639-1 language codes
     */
    languages: [
        {name: "Afaan Oromoo", code: "om"},
        {name: "Afaraf", code: "aa"},
        {name: "Afrikaans", code: "af"},
        {name: "Akan", code: "ak"},
        {name: "Aragonés", code: "an"},
        {name: "Asụsụ Igbo", code: "ig"},
        {name: "Avañe'ẽ", code: "gn"},
        {name: "Aymar aru", code: "ay"},
        {name: "Azərbaycanca", code: "az"},
        {name: "Bahasa Indonesia", code: "id"},
        {name: "Bahasa Melayu", code: "ms"},
        {name: "Bamanakan", code: "bm"},
        {name: "Basa Sunda", code: "su"},
        {name: "Bislama", code: "bi"},
        {name: "Brezhoneg", code: "br"},
        {name: "Bosanski", code: "bs"},
        {name: "Català", code: "ca"},
        {name: "Chamoru", code: "ch"},
        {name: "Corsu", code: "co"},
        {name: "Cymraeg", code: "cy"},
        {name: "Čeština", code: "cs"},
        {name: "Diné bizaad", code: "nv"},
        {name: "Deutsch", code: "de"},
        {name: "Eesti", code: "et"},
        {name: "Eʋegbe", code: "ee"},
        {name: "English", code: "en"},
        {name: "Español", code: "es"},
        {name: "Esperanto", code: "eo"},
        {name: "Euskara", code: "eu"},
        {name: "Faka‑Tonga", code: "to"},
        {name: "Føroyskt", code: "fo"},
        {name: "Français", code: "fr"},
        {name: "Frysk", code: "fy"},
        {name: "Fulfulde", code: "ff"},
        {name: "Gaelg", code: "gv"},
        {name: "Gaeilge", code: "ga"},
        {name: "Gàidhlig", code: "gd"},
        {name: "Galego", code: "gl"},
        {name: "Gĩkũyũ", code: "ki"},
        {name: "Hausa", code: "ha"},
        {name: "Hiri Motu", code: "ho"},
        {name: "Hrvatski", code: "hr"},
        {name: "IsiNdebele", code: "nd"},
        {name: "IsiXhosa", code: "xh"},
        {name: "IsiZulu", code: "zu"},
        {name: "Italiano", code: "it"},
        {name: "Íslenska", code: "is"},
        {name: "Kajin M̧ajeļ", code: "mh"},
        {name: "Kanuri", code: "kr"},
        {name: "Kashmiri", code: "ks"},
        {name: "Kernewek", code: "kw"},
        {name: "Kikongo", code: "kg"},
        {name: "Kirundi", code: "rn"},
        {name: "Kiswahili", code: "sw"},
        {name: "Kinyarwanda", code: "rw"},
        {name: "Kurdî", code: "ku"},
        {name: "Lao", code: "lo"},
        {name: "Latine", code: "la"},
        {name: "Latviešu", code: "lv"},
        {name: "Lëtzebuergesch", code: "lb"},
        {name: "Lietuvių", code: "lt"},
        {name: "Lingála", code: "ln"},
        {name: "Luganda", code: "lg"},
        {name: "Magyar", code: "hu"},
        {name: "Malagasy", code: "mg"},
        {name: "Malti", code: "mt"},
        {name: "Māori", code: "mi"},
        {name: "Melayu", code: "ms"},
        {name: "Nederlands", code: "nl"},
        {name: "Norsk", code: "no"},
        {name: "Norsk bokmål", code: "nb"},
        {name: "Norsk nynorsk", code: "nn"},
        {name: "Occitan", code: "oc"},
        {name: "Odia", code: "or"},
        {name: "Oshikwanyama", code: "kj"},
        {name: "Pāli", code: "pi"},
        {name: "Polski", code: "pl"},
        {name: "Português", code: "pt"},
        {name: "Reo Tahiti", code: "ty"},
        {name: "Română", code: "ro"},
        {name: "Rumantsch", code: "rm"},
        {name: "Русский", code: "ru"},
        {name: "Sängö", code: "sg"},
        {name: "Sesotho", code: "st"},
        {name: "Setswana", code: "tn"},
        {name: "Shqip", code: "sq"},
        {name: "Slovenčina", code: "sk"},
        {name: "Slovenščina", code: "sl"},
        {name: "Soomaali", code: "so"},
        {name: "Suomi", code: "fi"},
        {name: "Svenska", code: "sv"},
        {name: "Tiếng Việt", code: "vi"},
        {name: "Türkçe", code: "tr"},
        {name: "Yкраїнська", code: "uk"},
        {name: "اردو", code: "ur"},
        {name: "العربية", code: "ar"},
        {name: "فارسی", code: "fa"},
        {name: "עברית", code: "he"},
        {name: "हिन्दी", code: "hi"},
        {name: "বাংলা", code: "bn"},
        {name: "தமிழ்", code: "ta"},
        {name: "తెలుగు", code: "te"},
        {name: "ไทย", code: "th"},
        {name: "ᐃᓄᒃᑎᑐᑦ", code: "iu"},
        {name: "日本語", code: "ja"},
        {name: "中文", code: "zh"},
        {name: "한국어", code: "ko"},
        {name: "ꆇꉙ", code: "ii"},
        {name: "བོད་སྐད་", code: "bo"},
        {name: "རྫོང་ཁ", code: "dz"},
        {name: "မြန်မာဘာသာ", code: "my"},
        {name: "ქართული", code: "ka"},
        {name: "ትግርኛ", code: "ti"},
        {name: "አማርኛ", code: "am"},
        {name: "ᐊᓂᔑᓈᐯᒧᐎᓐ", code: "oj"},
        {name: "Ṣọ̀rọ̀ Yorùbá", code: "yo"},
        {name: "Wolof", code: "wo"},
        {name: "IsiSwati", code: "ss"},
        {name: "Volapük", code: "vo"},
        {name: "Tshivenḓa", code: "ve"},
        {name: "Xitsonga", code: "ts"}
    ]    
})

;