Шустрый

Профиль
Группа: Участник
Сообщений: 64
Регистрация: 31.1.2013
Репутация: нет Всего: нет
|
Цитата(Aliance @ 22.2.2013, 10:12 ) | | Я так понимаю наполнение идет в функции func_cams_groups? |
Не совсем. В начале общий функционал: Есть одна страница admin.html. К ней подкреплены ещё шесть в виде вкладок на основной странице (адресса не отображаются в адрессной строке), так сказать в фоновом режиме: | Код | $(alist) .append($('<li/>',{action: 'func_cams'}).append($('<a/>',{href:'admin/cams.html', text:'Список камер'}))) .append($('<li/>',{action: 'func_cams_groups'}).append($('<a/>',{href:'admin/cams_groups.html', text:'Список групп камер'}))) .append($('<li/>',{action: 'func_users'}).append($('<a/>',{href:'admin/users.html', text:'Список пользователей'}))) .append($('<li/>',{action: 'func_groups'}).append($('<a/>',{href:'admin/groups.html', text:'Список групп'}))) .append($('<li/>',{action: 'func_rules'}).append($('<a/>',{href:'admin/rules.html', text:'Права пользователей'}))) .append($('<li/>',{action: 'func_rules_groups'}).append($('<a/>',{href:'admin/group_rules.html', text:'Права групп'}))) ;
|
Пользователь логинится и его кидает на вкладку 'Список камер'. Он может переключаться между остальными вкладками, а в строке висит всё так же http//...admin.html Теперь касаемо наполнения: Пользователь зашёл на 'Список групп камер', там сводная таблица и иконки (каждая предоставляет свои данные). Тыкает (в нашем случае "просмотр назначенных прав") и поехали: Тыкнул в сформированную иконку, загрузка функции viewrules_cam_group_all (group.cam_gr_id) с параметром, для отображения прав относящихся к данной группе | Код | .append($('<div/>',{title: 'Просмотр прав группы', "class":'btn_usr_vr' }).bind('click',(function(group){return function(){viewrules_cam_group_all(group.cam_gr_id)}})(group)))
|
Сама функция | Код | function viewrules_cam_group_all(id){ $.when(get_cam_group_rules_for_gr(id)).done(function(){vr_cam_gr_draw_all(id);}).fail(function(){sad();});} |
Подгрузила данные с помощью get_cam_group_rules_for_us(id) | Код | function get_cam_group_rules_for_gr(id) { var vr_url = cam_control+"/cgi-bin/admin.pl?m=getcamgrouprulesgroups&cam_gr_id="+id; return $.ajax({ type: 'GET', dataType: 'json', cache: false, url: vr_url, success: function(data){ if(data.error != undefined) { if(undefined != err_lang[data.error]) { alert('Ошибка: '+err_lang[data.error]); }else{ alert('Возникла неизвестная ошибка, попробуйте позже. ('+data.error+')'); } } else { if(data.length>0) { group[id]={}; for (var data_line in data) { group[id][data_line] = data[data_line]; } } else { } } }, error:function (xhr, ajaxOptions, thrownError, request, error){ alert('Возникла ошибка загрузки прав, попробуйте подгрузить их позже. \n [ \n'+'xrs.status = ' + xhr.status + '\n' + 'thrown error = ' + thrownError + '\n' + 'xhr.statusText = ' + xhr.statusText + '\n' + 'request = ' + request + '\n' + 'error = ' + error+' \n ]'); } }); } |
Если всё хорошо и данные пришли, то начинаем создавать таблицу и наполнять при помощи vr_cam_gr_draw_all(id) | Код | function vr_cam_gr_draw_all(id) { if(($("#vr_grcam_"+id).length > 0)) { var tdiv = $("#vr_grcam_"+id); var ttable = $('#vr_grcam_t'+id); } else { var tdiv = $('<div/>',{id: "vr_grcam_"+id, title: "Список прав групп и пользователей (ID: "+id+")", "class": "list" }); var ttable = $('<table/>',{id: "vr_grcam_t_"+id, "class": "list", style: "border-bottom: 0px;" }); $(ttable) .append($('<thead/>').append($('<tr/>') .append($('<th/>',{text: 'ID Группы', width: 120})) .append($('<th/>',{text: 'Имя группы', width: 220})) .append($('<th/>',{text: 'Статус права', width: 110})) .append($('<th/>',{text: '', width: 250}))
)) ; $(tdiv).append(ttable);
for(var ruleline in group[id]) { $(ttable).append($('<tr/>') .append($('<td/>',{text: group[id][ruleline].group_id})) .append($('<td/>',{text: group[id][ruleline].group_name})) .append($('<td/>',{html: lang.rules.allowed[group[id][ruleline].rule_status]})) .append($('<td/>') .append($("<form id="+D+id+group[id][ruleline].group_id+">") .append($("<div/>", {"class":"divsel"}) .append($("<select name='rule_status'><option value=''>Выбрать статус</option><option value='0'>Запрещено</option><option value='1'>Разрешено</option><option value='2'>Только онлайн</option></select>"))) .append("<input type='hidden' name='cam_gr_id' value="+id+">") .append("<input type='hidden' name='group_id'value="+group[id][ruleline].group_id+">") .append($("<div/>", {"class":"divbut"}) .append($('<button/>',{button: {}, "type": "submit", text: 'Изменить'}).click(edit_rules)))) .append($("</form>"))
)
); }} $(tdiv).dialog({ width: '700', height: '300', resize: false }); }
|
Наполнение окончино, диалогово окно вылезло. Если надо поменять права (по этому поводу и заводилась тема, подавляющее большенство проблем решено), меняем, жмём ИЗМЕНИТЬ и функция edit_rules() делает своё дело Так же во вложении код, но он вчерашний, без добавлений по вашему совету. Это если сам функционал страницы не понятен и если вообще захочется копаться в 2000+ строчек кода)) Это сообщение отредактировал(а) Jops - 22.2.2013, 12:18
Присоединённый файл ( Кол-во скачиваний: 0 )
func.admin.js 92,97 Kb
|