| Autor | Zpráva | ||
|---|---|---|---|
| Hallo Profil * |
#1 · Zasláno: 29. 2. 2012, 16:46:33
Ahoj, snažím se o pseudogrid, u rowSelect metody mi nějak (nebo spíš někam) utíká scope .. předaná property je undefined .. mrkněte na to někdo prosím...
var KtplDS = new DataStore();
KtplDS.setUrl('{link Akoncerts:TemplatesSource}');
function KtplGrid(){
var unique = Math.round((new Date()).getTime());
var datastore = null;
var storedData = false;
var tempData = false;
var target_element = false;
var rowSelectFunction = false;
var updateData = function(overwrite) {
datastore.update(function(JSONres){
storedData = JSONres;
parseData(overwrite);
return ;
});
};
var parseData = function(overwrite) {
// hook pro iteraci nad DS
if(overwrite) {
prepareSkeleton();
}
return ;
};
var prepareSkeleton = function() {
var buffer = [];
buffer.push('<div class="st-tr-wrapper"><div class="st-tr-header">Správa šablon koncertů</div>');
buffer.push('<div class="st-tr-left">Položka<ul>');
if(storedData.count)
{
// fill data from datastore
tempData = storedData.data;
// test row select function
if(typeof rowSelectFunction == 'function') {
var rowSelect = true;
} else {
var rowSelect = false;
}
for (var iks in tempData) {
buffer.push('<li class="st-tr-item"');
if(rowSelect) {
buffer.push('onclick="ktplGrid.rowSelect(',parseInt(tempData[iks]['idconcerts']),')"');
}
buffer.push('>');
if(parseInt(tempData[iks]['active'])) {
buffer.push('<strike>');
}
buffer.push(tempData[iks]['internal_name']);
if(parseInt(tempData[iks]['active'])) {
buffer.push('</strike>');
}
buffer.push('</li>');
};
} else {
buffer.push('<li>no data</li>');
}
buffer.push('</ul></div>');
buffer.push('<div class="st-tr-dataentry" id="');
buffer.push(unique,'"></div></div>');
$('#'+target_element).html(buffer.join(''));
};
return {
setStore : function(DStore) {
if(typeof DStore == 'object') {
datastore = DStore;
return true;
} else {
return false;
}
},
registerRowSelect: function(FnK) {
if(typeof FnK == 'function') {
rowSelectFunction = FnK;
return true;
} else {
return false;
}
},
rowSelect: function(rowid) {
// test row select function
if(typeof rowSelectFunction == 'function') {
// test grid state and row id
if(tempData && typeof tempData[rowid] != 'undefined') {
rowSelectFunction.call(tempData[rowid],unique);
return true;
} else {
return false;
}
} else {
return false;
}
},
setTargetHook : function(TargetElement) {
target_element = TargetElement;
},
render : function(overwrite) {
updateData(overwrite);
}
}
}
ktplGrid = new KtplGrid();
ktplGrid.setStore(KtplDS);
ktplGrid.setTargetHook('snippet--content');
ktplGrid.registerRowSelect(function(row,uq){
var buffer = [];
buffer.push('Šablona koncertu "',row['internal_name'],'"<br/>')
buffer.push('<form id="st-art-form" method="POST">');
buffer.push('<input type="hidden" name="idartists" value="',row['idkoncerts'],'"/>');
buffer.push('<fieldset id="basic">','<legend>Nastavení</legend>');
buffer.push('<label for="name">Interní název </label>');
buffer.push('<input name="name" value="',row['internal_name'],'"/>');
buffer.push('<label for="translate_name">Šablona je aktivní</label>');
buffer.push('<input type="checkbox" name="active"');
if(parseInt(row['active'])) {
buffer.push('checked="checked"');
} else
buffer.push('"/>');
buffer.push('</fieldset>');
buffer.push('<input name="submit" type="submit" value="Odeslat"></form>');
$('#'+uq).html(buffer.join(''));
});
ktplGrid.render(true); |
||
| _es Profil |
#2 · Zasláno: 29. 2. 2012, 17:36:53
Hallo:
Skús ten problém nejako vyseparovať, v hentom akože OOP chaose sa ťažko vyznať. Aká metóda? Kde je definovaná? Kde je volaná? Aká „property“? |
||
| Hallo Profil * |
#3 · Zasláno: 1. 3. 2012, 11:17:41 · Upravil/a: Hallo
metoda je rowSelect, problém je už vyřešen, zapoměl jsem předat u call context - takže arg1 byl brán jako arg0 ..
Jinak souhlasím, že je to OOP humus, nemám JS vývojáře a přece jen můj skill s JS je roven nule .. |
||
|
Časová prodleva: 14 let
|
|||
0