API Docs for:
Show:

HomeController Class

ПРЕДОСТАВЛЕНИЕ ДАННЫХ В ВИДЕ DRAG&DROP И ng-GRID

       (function () {
           angular
               .module('app')
               .controller('HomeController', HomeController)
               .filter('id_list', id_list)
               .filter('execution_status', execution_status)

            HomeController.$inject = ['UserService', 'JsonService', 'uiGridConstants','$rootScope', '$timeout'];
           ........

Methods

addtasck

(
  • i
)

ФУНКЦИОНАЛ addtasck (i):

  1. ФОРМИРУЕТ ИЗ СТРОКИ ОБЪЕКТ-ЗАДАЧУ
  2. ДОБАВЛЯЕТ ОБЪЕКТ В vm.resjsontasks
  3. ОБНОВЛЯЕТ vm.rawScreens И ГРИД

Parameters:

  • i Integer

    НОМЕР ЛИСТА DRAG&DROP

createSheets

(
  • resgetJsonLists
)

ФУНКЦИОНАЛ createSheets (resgetJsonLists):
ЦИКЛОМ СОЗДАЮТСЯ ЛИСТЫ. ЛИСТАМ ПРИСВАИВАЕТСЯ ИМЯ И ID
СОЗДАННЫЕ ЛИСТЫ ДОБАВЛЯЮТСЯ В МАССИВ vm.rawScreens

           function createSheets(resgetJsonLists){
               if(!curUser){
                   UserService.GetByUsername($rootScope.globals.currentUser.username)
                   .then(function (user) {
                       // console.log('user', user);
                       vm.user = user;
                       for(let i=0; i < resgetJsonLists.length; i++){
                           vm['list_' + resgetJsonLists[i].id] = makeList(resgetJsonLists[i].id);
                           vm['list_' + resgetJsonLists[i].id].name = resgetJsonLists[i].name;
                           vm.rawScreens.push(vm['list_' + resgetJsonLists[i].id]);
                       };
                       curUser = true;
                       //СОЗДАЁМ ГРИД
                       initGrid();
                   });
               }else{
                   for(let i=0; i < resgetJsonLists.length; i++){
                       vm['list_' + resgetJsonLists[i].id] = makeList(resgetJsonLists[i].id);
                       vm['list_' + resgetJsonLists[i].id].name = resgetJsonLists[i].name;
                       vm.rawScreens.push(vm['list_' + resgetJsonLists[i].id]);
                   };
               }
           };

ПРИ ПЕРВОМ ПРОХОДЕ СОЗДАЕМ ГРИД

Parameters:

  • resgetJsonLists Object

    МАССИВ ИМЕН ЛИСТОВ

edittasck

(
  • i
  • j
  • t_index
)

ФУНКЦИОНАЛ edittasck (i, j, t_index):
ОТКРЫТИЕ ЗАДАЧИ ДЛЯ ПОДРОБНОГО ПРОСМОТРА И ВОЗМОЖНОГО РЕДАКТИРОВАНИЯ

Parameters:

  • i Integer

    НОМЕР ЛИСТА DRAG&DROP

  • j Integer

    id ЗАДАЧИ

  • t_index Integer

    ПОРЯДКОВЫЙ НОМЕР ЗАДАЧИ В DRAG&DROP

find_index_by_id

(
  • source
  • index
)
Integer

ФУНКЦИОНАЛ find_index_by_id(source, id) :
ПОИСК ИНДЕКСА ЗАДАЧИ В МАССИВЕ ПЕРЕДАННОГО ОБЪЕКТА - source ПО ПЕРЕДАННОМУ id function find_index_by_id(source,id){ let indexes = $.map(source, function(obj, index) { if(obj.id == id) { return index; } }) return indexes[0]; };

Parameters:

  • source Object

    МАССИВ ОБЪЕКТОВ

  • index Integer

    id ЗАДАЧИ

Returns:

Integer:

НАЙДЕННЫЙ ИНДЕКС

initGrid

()

ФУНКЦИОНАЛ initGrid ():

  1. vm.ngGridView - ОТОБРАЖАЕТ ГРИД В HTML

  2. vm.status - МАССИВ СТАТУСОВ ЗАДАЧИ (myCelTemp1 - SELECT ИЗ vm.status)

  3. vm.dragndrop_list - МАССИВ ЛИСТОВ (myCelTemp2 - SELECT ИЗ vm.dragndrop_list)

  4. ВЫВОД ПОЛЕЙ В GRID ПО ПОРЯДКУ СОРТИРОВКИ ПОЛЯ sort МАССИВА ridnameJsonLists

  5. ДЛЯ ОТОБРАЖЕНИЯ В ТАБЛИЦЕ СОЗДАЕМ "СТРОКОВЫЙ ОБЪЕКТ"- str И ПУШИМ ЕГО В columnDefs

        for(let j=0; j < tt.length; j++){
            if(tt[j].id != "$$hashKey") {
                    str = '{"field" : "' + tt[j].id + '"' + ',' + '"displayName" : "' + gridnameJsonLists[j].gridname + '"}' 
                    vm.gridOptions.columnDefs.push(JSON.parse(str)); 
            };
        };
    
  6. СКРЫВАЕМ ПОЛЕ ЕСЛИ ОНО ПРИСУТСТВУЕТ В МАССИВЕ notVisible ДЛЯ ОСТАЛЬНЫХ - ПЕРЕИМЕНОВЫВАЕМ ПОЛЯ ГРИДА

        let notVisible = ['id'];//'id_list'
    
        //СКРЫВАЕМ ПОЛЕ ЕСЛИ ОНО ПРИСУТСТВУЕТ В МАССИВЕ notVisible ДЛЯ ОСТАЛЬНЫХ - ПЕРЕИМЕНОВЫВАЕМ ПОЛЯ ГРИДА
        for(let j=0; j < notVisible.length; j++){
            for(let i=0; i < vm.gridOptions.columnDefs.length; i++){
                if(vm.gridOptions.columnDefs[i].field == notVisible[j]){
                    vm.gridOptions.columnDefs[i].visible = false;
                }else{
                    //НАХОДИМ ПО id (j) ИНДЕКС ЗАДАЧИ В МАССИВЕ vm.resjsontasks
                    let firstIndex = find_index_by_id(gridnameJsonLists, vm.gridOptions.columnDefs[i].field);
                    vm.gridOptions.columnDefs[i].displayName = gridnameJsonLists[firstIndex].gridname;
                    vm.gridOptions.columnDefs[i].width = gridnameJsonLists[firstIndex].width;
                }
            }
        };
    
  7. ДОБАВЛЯЕМ КНОПКИ РЕДАКТИРОВАНИЯ И УДАЛЕНИЯ

  8. ДОБАВЛЯЕММ ФИЛЬТРЫ И ОТМЕНЯЕМ ФИЛЬТРЫ ДЛЯ КНОПОК

        for(let j=0; j < vm.gridOptions.columnDefs.length; j++){
            
            if(vm.gridOptions.columnDefs[j].field == "id_list" || vm.gridOptions.columnDefs[j].field == "execution_status"){
                if(vm.gridOptions.columnDefs[j].field == "id_list") {
                    myFilter = myList
                } else  {
                    myFilter = myStatus
                }
    
                str = '{' 
                    + '"type" : "select",' 
                    + '"selectOptions"  : [ '
                    + myFilter 
                + ']}'
    
                vm.gridOptions.columnDefs[j].filter = JSON.parse(str);
    
                if(vm.gridOptions.columnDefs[j].field == "id_list") {
                    vm.gridOptions.columnDefs[j].cellFilter = 'id_list';
                }else{
                    vm.gridOptions.columnDefs[j].cellFilter = 'execution_status';
                }
    
            };
    
            if(vm.gridOptions.columnDefs[j].field == "edit" || vm.gridOptions.columnDefs[j].field == "delete") vm.gridOptions.columnDefs[j].enableFiltering = false;
            if(vm.gridOptions.columnDefs[j].field == "id_user") {
                vm.gridOptions.columnDefs[j].cellFilter = 'id_user';
                
                let dropDown;
    
                if(vm.user.id == 1) {
                    vm.allUsers.map(item => dropDown = dropDown + '{"value": "' + item.id + '", "label": "' + item.username + '" },');
                }else{
                    vm.allUsers.map(item => {
                        if(item.id == vm.user.id) {
                            dropDown = dropDown + '{"value": "' + item.id + '", "label": "' + item.username + '" },'
                        }
                    })
                }
                
                str = '{' 
                    + '"type" : "select",' 
                    + '"selectOptions"  :  ['
                    + dropDown.slice(9,-1) 
                + ']}';
    
                vm.gridOptions.columnDefs[j].filter = JSON.parse(str);
            }
        };

makeList

(
  • id_list
)
Object

ФУНКЦИОНАЛ makeList (id_list):
ВОЗВРАЩАЕТ ОТФИЛЬТРОВАННЫЙ ПО ПОЛЯМ: id_list/id_user МАССИВ ЗАДАЧ

           function makeList (id_list) {
               var filter_resjsontasks = [];
               if(vm.user.id != 1) {
                   filter_resjsontasks = vm.resjsontasks.filter(item => item.id_list == id_list && item.id_user == vm.user.id);
               }else{
                   filter_resjsontasks = vm.resjsontasks.filter(item => item.id_list == id_list);
               }
               return filter_resjsontasks;
           };

Parameters:

  • id_list Integer

    ID ЛИСТА

Returns:

Object:

filter_resjsontasks

savetasck

()

ФУНКЦИОНАЛ savetasck() :

  1. ПОИСК ИНДЕКСА ЗАДАЧИ В МАССИВЕ vm.resjsontasks
  2. ОБНОВЛЕНИЕ ПОЛЕЙ В ЗАДАЧЕ (ИЗ МАССИВА vm.resjsontasks)
  3. ЕСЛИ БЫЛ ИЗМЕНЕН СТАТУС ЗАДАЧИ - ОБНОВЛЕНИЕ МАССИВА vm.rawScreens

Properties

ДАННЫЕ ДЛЯ HTML

Object final static

ВСЕ ЧТО "ПРЕДАЕТСЯ"" В HTML

vm.tasck_limit = 15; vm.ngGridView = null;
       vm.user = null;
       vm.allUsers = [];
       vm.deleteUser = deleteUser;

       vm.exit_modal = exit_modal;
       vm.savetasck = savetasck;
       vm.edittasck = edittasck;
       vm.deltasck = deltasck;
       vm.addtasck = addtasck;
       vm.def_click = def_click;
       vm.finish_loader = finish_loader;
       vm.start_loader = start_loader;
       vm.logModels = logModels;
       vm.my_alert = my_alert;
       vm.change_list = change_list;
       vm.change = false;

       vm.rawScreens = [];
       vm.sortingLog = [];

       vm.resjsontasks = [];
       vm.resgetJsonLists = [];

       vm.sortableOptions = {
           placeholder: "app",
           connectWith: ".apps-container",
           update: function(event, ui) {
             if (// ensure we are in the first update() callback
                 !ui.item.sortable.received &&
                 // check that its an actual moving
                 // between the two lists
                 ui.item.sortable.source[0] !== ui.item.sortable.droptarget[0] &&
                 // check the size limitation
                 ui.item.sortable.droptargetModel.length >= vm.tasck_limit) {
               ui.item.sortable.cancel();
             }
           },
           stop: function(event, ui) {
             //!!! ОБНОВЛЯЕМ id_list У ПЕРЕМЕЩЕННОЙ ЗАДАЧИ !!!
             // var str = Number(ui.item.sortable.droptargetList[0].attributes.id.value.slice(7,10));
             // ui.item.sortable.model.id_list = str + 1
             
             for (let i = 0; i < vm.rawScreens.length; i++) {
               vm.rawScreens[i].map(function (x) {
                   // console.log(x);
                   x.id_list = i + 1; 
               })
             }
           }
       }; 

       vm.status = [
           {id: 1, name:'Ожидает'},
           {id: 2, name:'В работе'},
           {id: 3, name:'Выполнено'},
       ];

       $('#dtpckr').datepicker();

       var gridnameJsonLists = [];
       let curUser = false;