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'];
........
Item Index
Properties
- ДАННЫЕ ДЛЯ HTML static
Methods
addtasck
-
i
ФУНКЦИОНАЛ addtasck (i):
- ФОРМИРУЕТ ИЗ СТРОКИ ОБЪЕКТ-ЗАДАЧУ
- ДОБАВЛЯЕТ ОБЪЕКТ В vm.resjsontasks
- ОБНОВЛЯЕТ vm.rawScreens И ГРИД
Parameters:
-
iIntegerНОМЕР ЛИСТА 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:
-
resgetJsonListsObjectМАССИВ ИМЕН ЛИСТОВ
edittasck
-
i -
j -
t_index
ФУНКЦИОНАЛ edittasck (i, j, t_index):
ОТКРЫТИЕ ЗАДАЧИ ДЛЯ ПОДРОБНОГО ПРОСМОТРА И ВОЗМОЖНОГО РЕДАКТИРОВАНИЯ
Parameters:
-
iIntegerНОМЕР ЛИСТА DRAG&DROP
-
jIntegerid ЗАДАЧИ
-
t_indexIntegerПОРЯДКОВЫЙ НОМЕР ЗАДАЧИ В DRAG&DROP
find_index_by_id
-
source -
index
ФУНКЦИОНАЛ 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:
-
sourceObjectМАССИВ ОБЪЕКТОВ
-
indexIntegerid ЗАДАЧИ
Returns:
НАЙДЕННЫЙ ИНДЕКС
initGrid
()
ФУНКЦИОНАЛ initGrid ():
-
vm.ngGridView - ОТОБРАЖАЕТ ГРИД В HTML
-
vm.status - МАССИВ СТАТУСОВ ЗАДАЧИ (myCelTemp1 - SELECT ИЗ vm.status)
-
vm.dragndrop_list - МАССИВ ЛИСТОВ (myCelTemp2 - SELECT ИЗ vm.dragndrop_list)
-
ВЫВОД ПОЛЕЙ В GRID ПО ПОРЯДКУ СОРТИРОВКИ ПОЛЯ sort МАССИВА ridnameJsonLists
-
ДЛЯ ОТОБРАЖЕНИЯ В ТАБЛИЦЕ СОЗДАЕМ "СТРОКОВЫЙ ОБЪЕКТ"- 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)); }; }; -
СКРЫВАЕМ ПОЛЕ ЕСЛИ ОНО ПРИСУТСТВУЕТ В МАССИВЕ 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; } } }; -
ДОБАВЛЯЕМ КНОПКИ РЕДАКТИРОВАНИЯ И УДАЛЕНИЯ
-
ДОБАВЛЯЕММ ФИЛЬТРЫ И ОТМЕНЯЕМ ФИЛЬТРЫ ДЛЯ КНОПОК
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
ФУНКЦИОНАЛ 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_listIntegerID ЛИСТА
Returns:
filter_resjsontasks
savetasck
()
ФУНКЦИОНАЛ savetasck() :
- ПОИСК ИНДЕКСА ЗАДАЧИ В МАССИВЕ vm.resjsontasks
- ОБНОВЛЕНИЕ ПОЛЕЙ В ЗАДАЧЕ (ИЗ МАССИВА vm.resjsontasks)
- ЕСЛИ БЫЛ ИЗМЕНЕН СТАТУС ЗАДАЧИ - ОБНОВЛЕНИЕ МАССИВА 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;
