Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 16, 2006 13:40:25

pythonwin
От:
Зарегистрирован: 2006-07-18
Сообщения: 1294
Репутация: +  0  -
Профиль   Отправить e-mail  

AJAX-таблица в AJAX-таблице

Всем привет!

Пожалуйста, помогите:
как в AJAX-таблицу в качестве колонки вставить AJAX-таблицу?

или хотя бы в калонки вставлять html-код?



Офлайн

#2 Ноя. 16, 2006 14:17:33

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

AJAX-таблица в AJAX-таблице

Попробуй через свойство dom объекта innerHTML.



Офлайн

#3 Ноя. 20, 2006 07:53:26

pythonwin
От:
Зарегистрирован: 2006-07-18
Сообщения: 1294
Репутация: +  0  -
Профиль   Отправить e-mail  

AJAX-таблица в AJAX-таблице

готово:
widget.js

var row = function (l1){
return TR(null, map(td_f, l1))
}

var td_f = function (l){
if (l){return TD(null, dict_to_table(l))}
else {return TD(null, l)}
}

var dict_to_table = function (dict1){
rows=dict1;
headers1=dict1;
return TABLE({border:'1'}, THEAD(null,map(TH, headers1)), TBODY(null, map(row,rows)))
}



var Widget={};
Widget.imagedir='/tg_static/images/';

var vaihda = function (elem1) {
// parentNode = li, childNodes = ul
var nodes = elem1.parentNode.childNodes; // sisemmän ul:n lapsielementit
var element;
// käydään kaikki sisemmän ul:n sisällä olevat li-elementit
for(var i=0; i<nodes.length; i++) {
element = nodes;
if (element.tagName) {
if (element.tagName.toLowerCase() == “li”) { // vaihtoehtoinen tapa olisi tutkia nodeType&#228;
// vaihdetaan kuvaketta
if (hasElementClass(element, “invisible”)) { // mochikit
elem1.setAttribute(“src”,'/tg_static/images/minus.jpg');
// elem1.parentNode.parentNode.width=elem1.parentNode.childNodes.childNodes.clientWidth+100;
} else {
elem1.setAttribute(“src”,'/tg_static/images/plus.jpg');
// elem1.parentNode.parentNode.width='';
}
// piilotetaan tai n&#228;ytet&#228;&#228;n
toggleElementClass(“invisible”,element); // mochikit
}
}
}
}




Widget.exists = function(val)
{
return typeof(val) != ‘undefined’;
}

Widget.renderHandler = function(func,params)
{
var p='';
for(var i=0;i<params.length;i++)
{
if(p!='')p+=',';
p+=“'”+ params +“'”;
}
return func +'('+ p +')';
}
/*********************************** GRID ****************************/
Widget.grid ={};
Widget.grid.oddColor = ‘edf3fe’;
Widget.grid.evenColor = ‘ffffff’;
Widget.grid.highlightColor = ‘D9DFE9’;

Widget.grid.render = function(id,content)
{
var headers = (Widget.exists(content))? Widget.grid.renderHeader(id,content):'';
var rows = (Widget.exists(content))? Widget.grid.renderRows(id,content):'';

return TABLE({'id':id,'class':'grid','border':'0','cellpadding':'3','cellspacing':'1'},
THEAD(null,headers),
rows
);
}
Widget.grid.renderHeader = function(id,content)
{
var headers = content;
var actions = Widget.exists(content.actions)? content.actions:{};

var htr = TR(null);
var lastActiveCell= headers.length -1;
for(var i=headers.length -1;i >= 0;i–)
{
var cell = headers;
var column_name = (Widget.exists(cell.column))? cell.column:cell;
if(Widget.columnIsHidden(content,column_name)) continue;
lastActiveCell = i;
break;
}
for(var i=0;i < headers.length;i++)
{
var cell = headers;
var column_name = (Widget.exists(cell.column))? cell.column:cell;
var label = (Widget.exists(cell.label))? cell.label:column_name;
var props = {'id':'TH_'+ id +'_'+ column_name,'class':'heading'};
var sortIcon = ‘';

if(Widget.columnIsHidden(content,column_name)) continue;
if(Widget.exists(cell.sort))
{
sortIcon = IMG({’id':'TH_IMG_'+ id +'_'+ column_name,
‘src’:Widget.imagedir +'arrow_'+ cell.sort +'_small.png',
‘border’:'0'});
}
if(Widget.exists(actions.sort))
{
var sortOrder = (Widget.exists(cell.sort))? cell.sort:'down';
props = {'onclick':actions.sort +“('”+ column_name +“','”+ sortOrder +“')”,
‘class’:'pointer heading',
‘title’:'Sort by ‘+ label};
label = SPAN(null,sortIcon,label);
}
if(i==lastActiveCell &&
!(Widget.exists(actions.remove) || Widget.exists(actions.edit) ) &&
Widget.exists(actions.column_management)) label = SPAN(null,Widget.grid.manageColumns(id,content),label);
htr.appendChild(TH(props,label));
}
if(Widget.exists(actions.remove) || Widget.exists(actions.edit))
{
var cm = (Widget.exists(actions.column_management))? SPAN(null,Widget.grid.manageColumns(id,content)):’';
htr.appendChild( TH({'id':'TH_'+ id,'class':'heading','style':'width:40px;'},cm));
}

if(!htr.hasChildNodes() && Widget.exists(actions.column_management))
{
props = {'id':'TH_'+ id +'_column_manage','class':'heading'};
htr.appendChild(TH(props,
SPAN(null,Widget.grid.manageColumns(id,content))
)
);
}
return htr;
}

Widget.grid.manageColumns = function(id,content)
{
var headers = content;
var dropDown = UL({'id':'column_chooser_list','class':'column_chooser_list'});

for(var i=0;i < headers.length;i++)
{
var cell = headers;
var column_name = (Widget.exists(cell.column))? cell.column:cell;
var label = (Widget.exists(cell.label))? cell.label:column_name;

var icon = ‘';
if(!Widget.columnIsHidden(content,column_name))
{
icon = IMG({’border':'0','src':Widget.imagedir+'save.png'});
}
var p = content.actions.column_management.params.concat(column_name);
var action= ‘javascript:’+ Widget.renderHandler(content.actions.column_management,p);
dropDown.appendChild( LI({'onclick':action},A({'href':'#'},icon,label)) );
}
return SPAN({'id':'column_chooser_'+ id,'float':'right'},
A({'href':'#','class':'column_chooser_link',
‘onmouseover’:'document.getElementById(“column_chooser_list”).style.display=“block”',
‘onmouseout’:'document.getElementById(“column_chooser_list”).style.display=“none”'
},
IMG({'src':Widget.imagedir+'column_chooser.png','border':'0'}),
dropDown
)
);
}
Widget.columnIsHidden = function(content,column_name)
{
if(!Widget.exists(content)) return false;
for(var i=0;i< content.length;i++)
{
if(column_name==content) return true;
}
return false;
}
Widget.grid.renderRows = function(id,content)
{
var rows = content;
var actions = Widget.exists(content.actions)? content.actions:{};
var tb = TBODY(null);
for(var i=0;i < rows.length;i++)
{
var row= rows;
var row_id = (Widget.exists(row.value))? row.value:row;
var cursor =(Widget.exists(actions.select))? ‘;cursor:pointer’:'';
var color = (i % 2 == 0)? Widget.grid.oddColor:Widget.grid.evenColor;
var gtr = TR( {
‘id’:'TR_'+ id +'_'+ row_id,
‘style’:'background-color:#'+ color + cursor,
‘class’:(i % 2 == 0)?'odd':'even',
‘onmouseover’:'Widget.grid.highlight(this,true)',
‘onmouseout’:'Widget.grid.highlight(this,false,“'+ color +'”)'
}
);

for(var j=0;j < row.length;j++)
{
var cell_value = (Widget.exists(row.value))? row.value:row;
if (cell_value){
var column_name = (Widget.exists(row.column))? row.column:'column_name';
if(Widget.columnIsHidden(content,column_name)) continue;
var cellid = ‘TD_’+ id +'_'+ row_id +'_'+ column_name;
var props = {'id':cellid,'valign':'top'};
if(Widget.exists(actions.select))
{
var p = actions.select.params.concat(row_id);
// ul_props {'style':“list-style-type: none; margin: 0; padding: 0; width: 9em;”}
// ul_li_props {'style':“font-family: Arial, sans-serif; font-size: small; margin: 0; padding: 0; margin-left: 2em; background-color: #FFFFFF;”}
props={
// ‘onclick’:Widget.renderHandler(actions.select,p),
// ‘class’:'pointer',
‘nowrap’:'nowrap',
‘valign’:'top',
‘id’:cellid};
}
var id_inTable='inTable_'+cellid;
/* img_dict={'src':'/tg_static/images/plus.jpg',
‘alt’:'/tg_static/images/plus.jpg',
‘onclick’:"vaihda(this); if (this.parentNode.childNodes.childNodes.clientWidth==0)\
{this.parentNode.parentNode.width='';} \
else {this.parentNode.parentNode.width=this.parentNode.childNodes.childNodes.clientWidth+100;}“};
span_dict={'onclick':”vaihda(this.parentNode.childNodes); if (this.parentNode.childNodes.childNodes.clientWidth==0)\
{this.parentNode.parentNode.width='';} \
else {this.parentNode.parentNode.width=this.parentNode.childNodes.childNodes.clientWidth+100;}"}
// this.parentNode.childNodes.childNodes.clientWidth*/
table1=Widget.grid.render(id_inTable, cell_value);
table1.width=“”;
// alert(table1.clientWidth);
// ul1=UL({'width':'100%'}, IMG(img_dict), SPAN(span_dict,' Пользователи'), LI({'class':'invisible','width':'100%'}, table1))
gtr.appendChild( TD(props, table1));
// gtr.appendChild( TD(props, dict_to_table(cell_value)));
}
else {
var column_name = (Widget.exists(row.column))? row.column:cell_value;
if(Widget.columnIsHidden(content,column_name)) continue;
var cellid = ‘TD_’+ id +'_'+ row_id +'_'+ column_name;
var props = {'id':cellid,'valign':'top'};
if(Widget.exists(actions.select))
{
var p = actions.select.params.concat(row_id);
props={'onclick':Widget.renderHandler(actions.select,p),
‘class’:'pointer',
// ‘nowrap’:'nowrap',
‘valign’:'top',
‘id’:cellid,
‘title’:'Select row' };
}
gtr.appendChild( TD(props,cell_value));
}
}
if(Widget.exists(actions.remove) || Widget.exists(actions.edit) ) gtr.appendChild( Widget.grid.renderRowActionsLink(actions,row_id) );
tb.appendChild(gtr);
}
return tb;
}
Widget.grid.renderRowActionsLink = function(actions,id)
{
var rem='';
var ed='';
if(Widget.exists(actions.remove))
{
var p = actions.remove.params.concat();
rem= A({'href':'javascript:'+ Widget.renderHandler(actions.remove,p),'title':'Remove Row'},
IMG({'src':Widget.imagedir+'remove.png','border':'0'})
);
}
if(Widget.exists(actions.edit))
{
var q = actions.edit.params.concat();
ed = A({'href':'javascript:'+ Widget.renderHandler(actions.edit,q),'title':'Edit Row'},
IMG({'src':Widget.imagedir+'edit.png','border':'0'})
);
}
return TD({'align':'right'},ed,rem);
}
Widget.grid.highlight = function(el,state,originalColor)
{
if(state) { el.style.backgroundColor = ‘#’+ Widget.grid.highlightColor; }
else { el.style.backgroundColor = ‘#’+ originalColor; }
}
/*********************************** SELECT ****************************/
Widget.select = {}
Widget.select.load = function(id,content)
{
var list= document.getElementById(id);
if(!Widget.exists(list))
{
alert('Are you shure the id for the list is correct?');
return;
}
for(var i=list.options.length-1;i>=0;i–) list.options = null;
for(var i=0;i<content.options.length;i++)
{
var opt = content.options;
var value = (Widget.exists(opt.value))? opt.value:opt;
var label = (Widget.exists(opt.label))? opt.label:value;
var selected = (Widget.exists(opt.selected))? true:false;
var defaultSelected = false;
list.options= new Option(label,
value,
defaultSelected,
selected);
}
}
Widget.select.render = function(id,content)
{
var sel= createDOM('SELECT',{'name':id,'id':id});
for(var i=0;i<content.options.length;i++)
{
var props = {'value':content.options.value};
if(Widget.exists(content.options.selected)) props = ‘selected’;
var opt = createDOM('OPTION',props,content.options.label);
sel.appendChild(opt);
}
return sel;
}
Widget.select.removeSelectedOptions = function(list)
{
if(list.selectedIndex==-1) return;
for(var i=list.options.length-1;i >=0;i–)
{
if(list.options!=null && list.options.selected) list.options=null;
}
}
Widget.select.addSelectedOptionsFromSourceToDestination = function(src,dest)
{
if(src.selectedIndex==-1) return;
var newList = ;
for(var i=0;i<dest.options.length;i++)
{
if(dest.options==null) continue;
newList= new Option(dest.options.text,
dest.options.value,
dest.options.defaultSelected,
dest.options.selected);
}
for(var i=0;i<src.options.length;i++)
{
if(src.options==null || src.options.selected==false) continue;
if(Widget.select.hasValue(dest,src.options.value)) continue;
newList= new Option(src.options.text,
src.options.value,
src.options.defaultSelected,
src.options.selected);
}
for(var i=0;i<dest.options.length;i++) dest.options = null;
for(var i=0;i<newList.length;i++)
{
dest.options=newList;
}
}
Widget.select.getSelections = function(list)
{
var values = ;
for(var i=0;i < list.options.length;i++)
{
if(list.options.selected) values =list.options.value;
}
if(values.length > 0) return values;
}
Widget.select.getOptionValuesAsCSV = function(list)
{
var csv='';
for(var i=0;i < list.options.length;i++)
{
if(csv!='')csv+=',';
csv+=list.options.value;
}
return csv;
}
Widget.select.getSelectionsAsCSV = function(list)
{
var values = Widget.select.getSelections(list);
var csv='';
for(var i=0;i < values.length;i++)
{
if(csv!='')csv+=',';
csv+=values;
}
return csv;
}
Widget.select.hasValue= function(list,value)
{
for(var i=0;i<list.options.length;i++)
{
if(list.options.value==value) return true;
}
return false;
}
/*********************************** ICON LABEL ****************************/
Widget.iconLabel ={}
Widget.iconLabel.render = function(name,title,action,params)
{
return A({
‘href’:Widget.renderHandler(action,params),
‘title’:title,
‘class’:'discloser'
},
IMG({'border':'0','style':'margin-right:5px;margin-left:10px','align':'absbottom',
‘src’:Widget.imagedir + name +'.png'} ),
title
);
}
Widget.pickDate = function(field_name)
{
var cal = new Calendar(1,null,Widget.date_selecting,Widget.date_closing);
cal.showsTime = false;
cal.setDateFormat('%Y-%m-%d');
cal.create();
cal.date_field = document.getElementById(field_name);
if (cal.date_field && typeof cal.date_field.value == “string”) {
cal.parseDate(cal.date_field.value);
}
cal.showAtElement(cal.date_field,'Br')
}
Widget.pickDateTime = function(field_name)
{
var cal = new Calendar(1,null,Widget.date_selecting,Widget.date_closing);
cal.showsTime = true;
cal.time24 = true;
cal.setDateFormat('%Y-%m-%d %H:%M');
cal.create();
cal.date_field = document.getElementById(field_name);
if (cal.date_field && typeof cal.date_field.value == “string”) {
cal.parseDate(cal.date_field.value);
}
cal.showAtElement(cal.date_field,'Br')
}
Widget.date_selecting = function (calendar,my_date)
{
calendar.date_field.value = my_date;
if (calendar.dateClicked) {
calendar.callCloseHandler();
}
}
Widget.date_closing= function(calendar)
{
calendar.destroy();
}



метод Root

def TableR1(self, **kw):
d1=dict(headers=, rows=[,,])
d=dict(headers=, rows=[,,])
return d



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version