Работа c jsApplication

Главный файл всего приложение на javascript. Он инициализируется в document.ready в конце приложения. Тут содержаться все вспомогательные методы, работа с ajax, выводы сообщение, работа с чатом, инициализация все компонентов.

Система использует JQuery, Bootstrap, Semantic-ui. Все компоненты системы унаследованы от Semantic-ui. Разметка страниц и кнопок реализована на Bootstrap.

Константы:

Статичные, применяемые во всей системе:

  • Bool isDebug — если установлена в false, то jsApplication.log() выводится не будет. В footer.tpl при инициализации стоит true
  • Bool asyncmode — по умолчанию — true. Все запросы, без явного переопределения через jsApplication.loadAjax устанавливается этот флаг
  • Int showTime — время показываемого сообщения. По умолчанию — 3000 (3 сек)
  • String defaultNumberSeparator — символ разбиение числа по сегментам. По умолчанию — «‘»
  • Object soundsList — список загруженных sound по ключу
  • Object topEventChat — объект работы с чатом

Для вывода в консоль, через jsApplication.log [jsApplication.debugMessage]

  • debugMessage.INFO — вывод информационных данных
  • debugMessage.ERROR — вывод ошибки
  • debugMessage.WARN — вывод предупреждения

Для вывода в massge list справа [jsApplication.messageType]

  • messageType.INFO — вывод информационных данных
  • messageType.ERROR — вывод ошибки
  • messageType.WARN — вывод предупреждения
  • messageType.SUCCESS — вывод успешного выполнения
  • messageType.PHONE — вывод телефонного звонка

Для конвертирования [jsApplication.convertType]

  • convertType.INTEGER — для целочисленных чисел
  • convertType.FLOAT — для чисел с плавающей точкой
  • convertType.STRING — для Строки

Вспомогательные методы:

  • [] array_unique( array ) — возвращает массив с уникальными значениями. Типы в массиве должны совпадать.
    1
    2
    
    jsApplication.array_unique(["1", "3", "5", "1", "6"]);
    //выведет ["1", "3", "5", "6"]
  • String formatBytes( int bytes, int decimals = 2) — возвращает форматированный вывод (строку) filesize.
    1
    2
    3
    4
    
    jsApplication.formatBytes(3424234);
    //выведет 3.27 Мб.
    jsApplication.formatBytes(3424234, 4);
    //выведет 3.2656 Мб.
  • String getTranslate( ‘path.name’) — Возвращает если найдет с lang/js.php по ключу и пути транслированную строку, иначе возвращает имя. Регистрозависимый поиск.
    1
    2
    3
    4
    
    jsApplication.getTranslate("buttons.Save");
    //выведет "Сохранить" на ru langpack
    jsApplication.getTranslate("buttons.save");
    //выведет "save" на ru langpack так как ненйдет
  • [] removeArrayValue( array, searchValue) — Удаляет элементы массива, найденные по значению. Регистрозависимый поиск.
    1
    2
    3
    
    var arr = ["1", "3", "5", "1", "6"];
    jsApplication.removeArrayValue(arr, "1");
    //выведет ["3", "5", "6"]
  • [] setArrayValue( array, addValue) — Вставляет новый элемент, если еще такого не было по значению. Типы в массиве должны совпадать.
    1
    2
    3
    4
    
    jsApplication.setArrayValue([1,4,3,5], 9);
    //выведет [1, 4, 3, 5, 9]
    jsApplication.setArrayValue([1,4,3,5], 4);
    //выведет [1, 4, 3, 5]
  • String getLinkParam( String paramName, Bool isJsonValue = false, subParamName = undefined, hrefLink = window.location.href) — Получает параметр url.
    1
    2
    3
    4
    5
    6
    7
    8
    
    //url browser - /employees/?filter={"filter_name":["вввв"]}&param=1
    jsApplication.getLinkParam("filter", true, "filter_name");
    //выведет ["вввв"]
    jsApplication.getLinkParam("param");
    //выведет "1"
    //Можно задать url явно
    jsApplication.getLinkParam("param1", false,  undefined, "/url/?param2=2&param3=3");
    //выведет "2"
  • [] getLinkParams( hrefLink = window.location.href ) — Получает массив всех параметров
    1
    2
    3
    
    //url browser - employees/?param2=2&param3=3
    jsApplication.getLinkParams();
    //выведет {param2: "2", param3: "3"}
  • String setLinkParam ( String keyName, keyValue, String hrefLink = window.location.href, Bool appendMode = true ) — Возвращает url с добавленным или измененным параметрами. hrefLink — берет или текущий url или то что задано, AppendMode регулирует — добавить к существующим или создать как новый список параметров.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    //url browser - employees/?param2=2&param3=3
    jsApplication.setLinkParam("param3", "4");
    //выведет /employees/?param2=2&param3=4"
     
    jsApplication.setLinkParam("param_zero", "0");
    //выведет /employees/?param2=2&param3=3&param_zero=0"
     
    jsApplication.setLinkParam("param_zero", "0", window.location.href, false);
    //выведет /employees/?param_zero=0"
  • String setLinkParams ( Object keyParams, Bool appendMode = true, hrefLink = window.location.href ) — Возвращает url с добавленными или измененными параметрами.
    keyParams — это объект(ассоциативный массив), который устанавливает параметры, hrefLink — берет или текущий url или то что задано, AppendMode регулирует — добавить к существующим или создать как новый список параметров.

    1
    2
    3
    
    //url browser - employees/?param2=2&param3=3
    jsApplication.setLinkParams({param2:"22", param_b: "b", param_c: "c"});
    //выведет /employees/?param2=22&param3=3&param_b=b&param_c=c"
  • String removeLinkParams( Array keyParams, hrefLink = window.location.href ) — Массив параметров, которые нужно удалить с hrefLink, hrefLink — берет или текущий url или то что задано.
    1
    2
    3
    
    //url browser - /employees/?post=814&action=edit&param1=1&param2=2
    jsApplication.removeLinkParams(["post","action"]);
    //выведет /employees/?param1=1&param2=2"
  • String getCompareUrl( url ) — Возвращает url для сравнения. Очищает последний слэш, если есть
    1
    2
    
    jsApplication.getCompareUrl("/employees/");
    //выведет "/employees"
  • [] sprintf( String sourceString, …args) — Аналог php sprintf. Поддерживает (%s, %d)
    1
    2
    
    jsApplication.sprintf('Param1: %s, Param2: %s, Param3: %d', 20, 'p2value', 'two')
    //выведет "Param1: 20, Param2: p2value, Param3: 0"
  • [] explode_array_filter( String path, String separator) — Аналог php explode, array_filter. Часто используется для url и путей. Возвращает массив очищая при этом пустые
    1
    2
    
    jsApplication.explode_array_filter("/var/wwww/path//html/", "/");
    //выведет  ["var", "wwww", "path", "html"]
  • String number_format( Numeric number, Int decimals, String dec_point, String thousands_sep ) — Аналог php number_format. Number — число само, decmails — разрядов, dec_point — символ разделения целых и дробных, thousands_sep — символ который вставляется между разрядами числа
    1
    2
    
    jsApplication.number_format(2018, 2, '.', ' ');
    //выведет  "2 018.00"
  • Number convertToNumber( value ) — Конвертирует value в тип Number, убирая лишние символы такие как «,» и лишние пробелы
    1
    2
    
    jsApplication.convertToNumber("100,2");
    //выведет  100.2
  • Number getNumber( num, defVal = 0) — Конвертирует любое value(bool, string, undefined, NaN…) в тип Number. defVal выводится в случае undefined || isNaN
    1
    2
    3
    4
    5
    6
    7
    8
    
    jsApplication.getNumber(window.noExistVariable);
    //выведет  0
    jsApplication.getNumber("1234");
    //выведет  1234
    jsApplication.getNumber([1,23]);
    //выведет  1.23
    jsApplication.getNumber(false);
    //выведет  0
  • String getString( num, defVal = «») — Конвертирует любое value в строку. defVal выводится в случае undefined
    1
    2
    3
    4
    5
    6
    7
    8
    
    jsApplication.getString(window.noExistVariable);
    //выведет  ""
    jsApplication.getString(1234);
    //выведет  "1234"
    jsApplication.getString([1,23]);
    //выведет  "1,23"
    jsApplication.getString(false);
    //выведет  "false"
  • Bool getBool( num, defVal = false) — Конвертирует любое value в bool. . defVal выводится в случае undefined
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    jsApplication.getBool(window.noExistVariable);
    //выведет  false
    jsApplication.getBool(1);
    //выведет true
    jsApplication.getBool(true);
    //выведет  true
    jsApplication.getBool(0);
    //выведет  false
    jsApplication.getBool(false);
    //выведет  false
  • String phoneToNumber( String tel, Bool cropCode = false) — Преобразует форматированный вывод телефона в число
    1
    2
    3
    4
    
    jsApplication.phoneToNumber("+7 (888) 888-88-88");
    //выведет  "+78888888888"
    jsApplication.phoneToNumber("+7 (888) 888-88-88", true);
    //выведет  "8888888888"
  • String timeFormat( String val, String separator=»:») — Преобразует форматированный вывод телефона в число
    1
    2
    
    jsApplication.timeFormat("2:03");
    //выведет  "02:03"
  • String appendZero( String | Int num, Int countZero =0) — Количество countZero символов перед точкой. Дополняет нулями
    1
    2
    3
    4
    
    jsApplication.appendZero(3,2);
    //выведет  "03"
    jsApplication.appendZero(3,4);
    //выведет  "0003"
  • String devideZero( String | Int devide, Int countZero) — Добавляет к числу количество countZerod нулей. Количество считается с учетом всего числа. Обратный от appendZero
    1
    2
    
    jsApplication.devideZero("2",3);
    //выведет "200"
  • String numberSeparate( String | Int num, String forceAfterZero, String numberSeperator = jsApplication.defaultNumberSeparator, Int isDevide = 0) — Выводит форматированное число. forceAfterZero — что добавлять после точки или запятой, если нет. numberSeperator — символ разбиения по разрядам. isDevide — количество нулей после точки или запятой, если в числе имеется
    1
    2
    3
    4
    5
    6
    7
    8
    
    jsApplication.numberSeparate(1024);
    //выведет "1'024"
    jsApplication.numberSeparate("111222","00");
    //выведет "111'222.00"
    jsApplication.numberSeparate("111222.00","00", " ");
    //выведет "111 222.00"
    jsApplication.numberSeparate("111222.00","", " ", 4);
    //выведет "111 222.0000"
  • Bool checkObject( Array | Object object, Bool existValues = false) — Проверяет объект или массив на существование как сущность. Если existValues выставить в true, то будет проверятся еще и на количество элементов
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    jsApplication.checkObject(window.notExistValue)
    //выведет false
    jsApplication.checkObject([]);
    //выведет true
    jsApplication.checkObject([], true);
    //выведет false
    jsApplication.checkObject([1,2,3], true);
    //выведет true
    jsApplication.checkObject({});
    //выведет true
    jsApplication.checkObject({},true);
    //выведет false
    jsApplication.checkObject({a:1, b:2, c:3},true);
    //выведет true
  • Void log( String msg, jsApplication.debugMessage type) — Аналог console.log, за исключением того, что если константа jsApplication.isDebug выставлена в false, то сообщения выводится не будут.
    1
    2
    
    jsApplication.log("message text", jsApplication.debugMessage.INFO);
    //выведет в консоль "message text"
  • jqXHR loadAjax( Object(jsApplication.ajaxOptions) settings) — Аналог $.ajax, за исключением того, что группирует все типы разных ошибок(если settings.checkSuccess стоит в true) и возвращает только settings.success(data) или settings.error(errorText).
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    
    jsApplication.loadAjax({
        //current url with params
        url: jsApplication.setLinkParams(),
        //post variable
        data: {param:1},
        success: function(data)
        {
            //complete
        },
        error: function(error)
        {
            //show message error
            jsApplication.showMessage(error, jsApplication.messageType.ERROR, jsApplication.showTime);
        }
    });
    //Так будет слушаться JSON Response.
    //Что бы отключить проверки и получить html контент
    jsApplication.loadAjax({
        dataType: "html",
        data: {param:1},
        url: jsApplication.setLinkParams(),
        checkSuccess: false,
        success: function(response){
            //complete
        },
        error: function(err){
            jsApplication.showMessage(err, jsApplication.messageType.ERROR, jsApplication.showTime);
        }
    });
  • Object ajaxOptions(Object settings) — Совмещает базовые настройки с settings. Используется в loadAjax
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    {
            timeout: 65000,
            method: "POST",
            data: {},
            url: "",
            dataType: "json",
            cache:false,
            checkSuccess: true,
            async: jsApplication.asyncmode,
            processData: true,
            contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
            success: function(){},
            error: function(){},
    }
  • Bool isset(htmlElement) — Проверяет есть ли в системе такой html элемент
    1
    2
    3
    4
    
    jsApplication.isset($("#text"));
    //вернет false
    jsApplication.isset($("body"));
    //вернет true
  • FormData serializedWithFile(Selector form, paramsSource, tinyMCEParam) — Сериализует форму c файлами. paramsSource — массив [{name:»», value:»»}] дополнительных параметров. tinyMCEParam — TinyMCE объект, если он не в current window.tinymce.
    1
    2
    
    jsApplication.serializedWithFile($(formInFrame));
    //вернет FormData
  • String|Array serializedData(Selector form, Object settings) — Сериализует все input, select на форме и возвращает строку или массив, в зависимости от settings.isArray.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    //settings base
    {
         //префикс полей исходный
        fromPrefix: "object_",
        //префикс полей который нужен
        toPrefix: "object_",
        //Возвращать массив или строку
        isArray: false,
        //Добавлять в опции action=save
        createSave: true,
        //Символ соединения в случае со строкой
        separator: "&",
        //Дополнительные параметры [{name:"a", value:"b"}]
        append:[],
    }
     
    jsApplication.serializedData($("#idform"),{createSave: false, append:[{name:"a", value:"b"}]})
    //input1=1&input2=2&a=b
    jsApplication.serializedData($("#idform"),{isArray: true, createSave: false, append:[{name:"a", value:"b"}]})
    //[{name: "input1", value: "1"}, {name: "input2", value: "2"},{name: "a", value: "b"}]
  • Void scrollTop(Int top, Selector selector = «body», int speed = 500) — Перематывает scroll(selector) в top: top, со скоростью speed
    1
    2
    
    jsApplication.scrollTop(0);
    //переход в body.scrollTop = 0
  • Bool isMinifedMenu() -Проверяет — свернуто ли левое меню или раскрыто на полною
    1
    2
    
    jsApplication.isMinifedMenu();
    //true/false
  • showFixedScreen(htmlText) — Открывает на весь экран loading Panel
    1
    
    jsApplication.showFixedScreen("<p>Какой то текст</p>");

    fixed screen

  • hideFixedScreen() — Закрывает loading Panel
    1
    
    jsApplication.hideFixedScreen();
  • SelectorfindTop(selectorName) — Поиск элемента в top.window
    1
    
    jsApplication.findTop("body");
  • SelectorgetModal(selectorName) — Поиск модального окна в top.window
    1
    
    jsApplication.getModal("#editModal_0");

Явные инициализации после load ajax html Elements:

  • Void createForm($form) — Необходимо вызывать, если форма подгружается динамически из ajax (Во всех остальных случаях инициализируется по умолчанию). Форма унаследует Form Semantic-ui with validation, с дополнительными фильтрами. Если у формы есть класс ajax-form — то она работает как AjaxForm на Submit.
    1
    2
    
    jsApplication.createForm($("#formID"));
    //Создаст Semantic-ui form. Установит валидаторы.
  • Void initRichText(Selector $parentSelector, Object settings) — Инициализирует tinyMce на селектор parentSelector. settings — настройки tinyMCE. Если у parentSelector выставлен атрибут «auto», то выставляется режим autoresize
    1
    
    jsApplication.initRichText($("#textarea"));
  • Void initDropdown(Selector $parentSelector, Object settings) -Создает Semantic-ui dropdown элемент.
    1
    
     jsApplication.initDropdown($(this).find("select"));
  • Void createCustomInput(Selector $parentSelector) -Создает Различные Ui поля(date, color, masked…)
    1
    
     jsApplication.createCustomInput($(form));
  • Void initMScroll(Selector target, settings) -MCustomScroll со всеми опциями settings.
    1
    
     jsApplication.initMScroll($("div.scroll"));

События:

Все события в Javascript, поступают по следующей последовательности:
Javascript->Jquery->Document.Ready->ReadyApp

  • readyApp -Событие вызывается, когда все компоненты инициализированы и устанавливает класс body «readyApp»
    1
    2
    3
    4
    5
    6
    
    //Подключиться к событию надо следующим образом
    $(document).ready(function(){
        $("body").on("readyApp", function(){
             //code here
        });
    });
Последние правки: 11.12.2018 16:32:42