var Panel, x, column, tab
kolonok = 10
stranic = 1
var parAll = []
funcAll = []
obAll = []
iobAll = []
All = []
MakeProperties();
BtnMake = NewButtonInput('Закончить');
BtnMake.OnChange = function() {
Make(); //Вызываем функцию построения всех панелей
Action.Finish();
}
Make();
Action.Continue();
true;
////////////////////////////////////////// --------- ОКНО СВОЙСТВ
function MakeProperties(kluch) {
if(kluch!=undefined)
{
if(kluch.toString().length>0)
{
// kluch = '.'+kluch
}
else{kluch = ''}
}
else{kluch = ''}
tab=[]
column=[]
All = []
Prop = Action.Properties;
Model.forEachPanel(function(p) {
system.log('p'+kluch)
Panel = eval('p'+kluch)
zapolnitOb('Panel')
});
ViewTabel(All,'Panel'+ kluch)
}
function MakeIndexedObjects(list,kluch,key,count) {
system.log(key2+' -- '+key+' -- '+count+' -- '+list)
if(kluch!=undefined)
{
if(kluch.toString().length>0)
{
// kluch = '.'+kluch
}
else{kluch = ''}
}
else{kluch = ''}
tab=[]
column=[]
All = []
Prop = Action.Properties;
for(i=0;i<count;i++)
{
Panel = list[i]
zapolnitOb('Panel')
};
ViewTabel(All,'Panel'+ kluch+'[it-1]')
}
function zapolnitOb(Panel1) {
settings = parametryObjekta(Panel1)
All.push(settings)
}
function zapolnitOb1(Panel1) {
settings = parametryPaneli(Panel1)
par = settings.par;
func = settings.func;
ob = settings.ob;
iob = settings.iob;
iobAll.push(iob)
parAll.push(par)
obAll.push(ob)
funcAll.push(func)
}
function Make() {}
function pkk(p, key, obkey) {
if (!system.fileExists('плохойkey.txt')) {
system.writeTextFile('плохойkey.txt', '') // Создаю плохойkey.txt
}
if (!system.fileExists('ВСЕплохиеkeyи.txt')) {
system.writeTextFile('ВСЕплохиеkeyи.txt', '') //Создаю ВСЕплохиеkeyи.txt
}
pk = system.readTextFile('плохойkey.txt')
Vsepk = system.readTextFile('ВСЕплохиеkeyи.txt')
if (pk.length > 0) {
pk = pk + '\n' + Vsepk
system.writeTextFile('ВСЕплохиеkeyи.txt', pk)
}
Vsepk = system.readTextFile('ВСЕплохиеkeyи.txt')
putkey = obkey + '.' + key
fk = 'Ошибка'
system.writeTextFile('плохойkey.txt', putkey)
if (!(Vsepk.indexOf(key.toString() + '\n') > -1)) {
// system.log(p + ' -- ' + key + ' -- ' + p[key])
fk = p[key]
} else {}
system.writeTextFile('плохойkey.txt', '')
return fk
}
function parametryObjekta(p) {
par = {};
func = {};
sl_ob = {};
sl_ob.obkey = p
sl_ob.ob_ = eval(p)
sl_ob.raskryt = false // по признаку есть ли не раскрытые будем раскрывать
p = sl_ob.ob_
obkey = sl_ob.obkey
s = '';
tf = ""
par["Panel"] = p
for (var key in p) {
fk = pkk(p, key, obkey)
par[key] = fk
}
return par
}
function parametryPaneli1(p) {
ob = {};
iob = {};
par = {};
func = {};
sl_ob = {};
sl_ob.obkey = p
sl_ob.ob_ = eval(p)
sl_ob.raskryt = false // по признаку есть ли не раскрытые будем раскрывать
settings = {};
settings.ob = ob;
settings.par = par;
settings.func = func;
p = sl_ob.ob_
obkey = sl_ob.obkey
s = '';
tf = ""
for (var key in p) {
fk = pkk(p, key, obkey)
if (!(fk === null) && (fk.toString() == '[object TJSIndexedProperty]')) {
iob[key] = fk
} else if ((typeof(fk) == 'object')) {
ob[key] = fk
} else if ((typeof(fk) == 'function')) {
var res
var tip = ''
try {
func[key] = fk
} catch (e) {
res = e.name
} finally {}
} else {
/*settings = {};
settings.par = key;
settings.zn = fk;
settings.tip = typeof(fk);
par.push(settings)*/
par[key] = fk
}
s = s + key + ':' + fk + ' --- ' + typeof(fk) + '\n';
}
t = '';
for (parset in func) {}
settings = {};
settings.par = par;
settings.func = func;
settings.ob = ob;
settings.iob = iob;
return settings
}
function SleduyushiyObyekt(s1) {
ob_so = s1.ob
for (iso = 0; iso < ob_so.length; iso++) {
if (ob_so[iso].raskryt == false) {
ob_so[iso].raskryt = true
ret = {}
ret.ob_ = ob_so[iso].ob_
ret.obkey = ob_so[iso].obkey
return ret
}
}
}
////////////+++++++++++++++ Таблица
function ViewTabel(tab,tabName)
{
tabName = tabName || '';
window = Window("Таблица: "+tabName, tabName)
columns = Columns(tab)
//alert(columns)
ColumnsToWindow(columns, window,tab)
//Rows(tab,window,columns)
window.Form.Show()
window.Pokaz.OnClick()
}
function Rows(tab, window) {
Props = window.Form.Properties;
x = 0
y = 100
w = 100
h = 22
page = 1
for (i = 0; i < tab.length; i++) {
row = "R" + i.toString()
str = tab[i]
for (var key in str) {
column = columns.indexOf(key.toString())
cel = row + "C" + column.toString()
if (str[key] == null) {
str[key] = 'null'
}
//system.log(cel+' -- '+str[key].toString())
//system.log( "Ключ: " + key + " значение: " + str[key] );
window["Page" + page.toString()] = Props.NewGroup(page.toString());
wP = window["Page" + page.toString()]
wP.SetLayout(0, 100, 1200, 800);
window[cel] = wP.NewString("");;
window[cel].Value = str[key].toString()
window[cel].SetLayout(x, y, x + w, h);
x = xpage[0]
page = xpage[1]
}
x = 0
y = y + 22
}
}
function Wide(x, column, w, page) {
if ((column + 1) % kolonok == 0) {
x = 0
page = page + 1
} else {
x = x + w
}
return [x, page]
}
function ColumnsToWindow(columns, window,tab) {
Props = window.Form.Properties;
x = 0
y = 22
w = 100
h = 22
naborKolonok = 0;
kolonkivyvedeny = false
page = 1
while (!kolonkivyvedeny) {
system.log(naborKolonok + kolonok)
doo = naborKolonok + kolonok;
if (doo > columns.length) {
doo = columns.length
kolonkivyvedeny = true
}
window["Page" + page.toString()] = Props.NewGroup(page.toString());
wP = window["Page" + page.toString()]
wP.SetLayout(0, 100, 1200, 800);
for (i = naborKolonok; i < doo; i++) {
window["R0C" + i.toString()] = wP.NewLabel(columns[i]);
window["R0C" + i.toString()].SetLayout(x, y, x + w, h);
VyvestiStolbec(i, columns[i], wP, x, y, w, h,tab);
x = x + w
}
x = 0
naborKolonok = i
page = page + 1
}
knopkiStranic(page-1,window)
//window.Form.Width = x;
}
function knopkiStranic(stranic,window)
{
window.Npage = Props.NewNumber("Страница");
window.Npage.SetLayout(80, 0, 320, 22);
window.Npage.Value = 1;
window.Npage.MinValue = 1;
window.Npage.MaxValue = stranic;
window.Npage.OnValueValidate = function(){
if(window.Npage.Value < 1)
{
window.Npage.Value = 1;
}
else if(window.Npage.Value > window.Npage.MaxValue )
{window.Npage.Value = window.Npage.MaxValue
}
}
//+++++++Кнопка
window.Pokaz = Props.NewButton("Показать");
window.Pokaz.SetLayout(470, 0, 68, 22);
window.Pokaz.OnClick = function(){
for(skr=1;skr<stranic+1;skr++)
{
if(skr==window.Npage.Value)
{
window["Page" + skr.toString()].Visible = true
}
else
{
window["Page" + skr.toString()].Visible = false
}
}
}
//-------------Кнопка
//+++++++Кнопка
window.Pred = Props.NewButton("Пред.");
window.Pred.SetLayout(0, 0, 68, 22);
window.Pred.OnClick = function(){
window.Npage.Value = window.Npage.Value -1;
for(skr=1;skr<stranic+1;skr++)
{
if(skr==window.Npage.Value)
{
window["Page" + skr.toString()].Visible = true
}
else
{
window["Page" + skr.toString()].Visible = false
}
}
}
//-------------Кнопка
//+++++++Кнопка
window.Sled = Props.NewButton("След.");
window.Sled.SetLayout(400, 0, 68, 22);
window.Sled.OnClick = function(){
window.Npage.Value = window.Npage.Value +1;
for(skr=1;skr<stranic+1;skr++)
{
if(skr==window.Npage.Value)
{
window["Page" + skr.toString()].Visible = true
}
else
{
window["Page" + skr.toString()].Visible = false
}
}
}
//-------------Кнопка
}
function VyvestiStolbec(column, key, wP, x, y, w, h,tab) {
y = y + h
for (it = 0; it < tab.length; it++) {
row = "R" + it.toString()
str = tab[it]
cel = row + "C" + column.toString()
if (str[key] == null) {
str[key] = 'null'
}
/*window[cel] = wP.NewString("");
// window[cel].Name = cel
window[cel].Value = str[key].toString()
window[cel].SetLayout(x, y, x + w, h);
*/
fk =tab[it].Panel[key]
//alert(fk)
if(fk==undefined){ fk='undefined'}
if (!(fk === null) && (fk.toString() == '[object TJSIndexedProperty]')) {
//iob[key] = fk
window[cel] = wP.NewButton(fk.toString());
// window[cel].Name = cel
// window[cel].Value = str[key].toString()
strV =
'window[cel].OnClick = function(){ \n' +
//'alert(window["R'+ it.toString()+'C'+ column.toString()+'"].Caption)}'
//'alert(tab['+it+'].Panel["'+key+'"])}'
//'alert(window.Form.Caption) \n' +
'ars = "'+window.Form.Caption+'".split("Таблица: Panel") \n' +
//'key2 = ars[1].toString().substring(1, ars[1].toString().length) \n' +
'key2 = ars[1] \n' +
'iob = tab['+it+'].Panel \n' +
//'alert(key2) \n' +
//'MakeProperties(key2+"."+key)'
'MakeIndexedObjects(iob,key2,key,'+tab[it].Count+')}'
system.log(strV)
eval(
strV
)
} else if ((typeof(fk) == 'object')) {
// ob[key] = fk
//alert(fk)
window[cel] = wP.NewButton(fk);
// window[cel].Name = cel
// window[cel].Value = str[key].toString()
strV =
'window[cel].OnClick = function(){ \n' +
//'alert(window["R'+ it.toString()+'C'+ column.toString()+'"].Caption)}'
//'alert(tab['+it+'].Panel["'+key+'"])}'
//'alert(window.Form.Caption) \n' +
'ars = "'+window.Form.Caption+'".split("Таблица: Panel") \n' +
//'key2 = ars[1].toString().substring(1, ars[1].toString().length) \n' +
'key2 = ars[1] \n' +
//'alert(key2) \n' +
'MakeProperties(key2+"."+key)}'
// system.log(strV)
eval(
strV
)
} else if ((typeof(fk) == 'function')) {
var res
window[cel] = wP.NewButton(fk.toString());
try {
// func[key] = fk
} catch (e) {
res = e.name
system.log(res)
} finally {}
} else {
window[cel] = wP.NewString("");
// window[cel].Name = cel
window[cel].Value = str[key].toString()
}
window[cel].SetLayout(x, y, w, h);
y = y + h
}
}
function Window(windowCaption, windowName) {
//-- window Window1
this[windowName] = {
Form: NewForm()
};
//Props = this[windowName].Form.Properties;
this[windowName].Form.Width = 1100;
this[windowName].Form.Height = 600;
this[windowName].Form.Caption = windowCaption;
return this[windowName]
}
function Columns(tab) {
columns = []
for (i = 0; i < tab.length; i++) {
str = tab[i]
for (var key in str) {
if (columns.indexOf(key.toString()) === -1) {
columns.push(key.toString())
}
//system.log( "Ключ: " + key + " значение: " + str[key] );
}
}
return columns
}
/// ----------------- Таблица
[свернуть]