Hallo liebe Gemeinde,
jetzt werden einige gleich denken, och nicht der schon wieder. Ja ich bin es wieder, habe wieder ein Problem.
Ich versuche gerade einen Ordner auszulesen, wo er danach eine eigene dynamische verkettete Auswahlliste erstellt.
Sprich: es wird als erstes der Ordner ausgelesen und danach die einzelnen Verkettungen gebildet.
Dieses Teilscript (s. u. Zusatzmatte.js) ist eine include-Datei. Sie wird durch ein vorheriges Script aufgerufen:
<script type="text/javascript" src="Zusatzmatten.js"></script>
…
function Go()
{…
//--------------
//Initialisieren
//--------------
//--> weiteres Ausführen des Scriptes
if( Eingabewerte.Bereich1 == "D" || Eingabewerte.Bereich1 == "E" || Eingabewerte.Bereich1 == "F" || Eingabewerte.Bereich1 == "G" )
{
document.getElementById( "STL_Meldungen_Überschreiben" ).style.display = "none";
document.getElementById( "STL_Meldungen_Alt_Text" ).style.display = "none";
document.getElementById( "STL_Zusatz_Meldungen" ).style.display = "inline";
init_Zusatzmatten() //-> hier wird die Datei Zusatzmatte initialisiert
} else {
document.getElementById( "STL_Meldungen_Überschreiben" ).style.display = "inline";
document.getElementById( "STL_Meldungen_Alt_Text" ).style.display = "inline";
document.getElementById( "STL_Zusatz_Meldungen" ).style.display = "none";
init_STL()
}
…}
Ich habe nun, wie unter selfhtml beschrieben, die include-Datei terminAuswahl.js so umgewandelt, dass mein Teilscript nun eine eigene Datei erstellt auf der Basis dieser terminAuswahl.js. Ich habe die komplette LinkedSelection übernommen und meinen eigenen Inhalt (Optionsdaten) eingefügt.
Das nun aufgeführte Script soll es verdeutlichen:
//-----------------------------
//-- Initialisierung
//-----------------------------
function init_Zusatzmatten()
{
var infile_zusatz, list_zusatz, out_zusatz, Zusatzmatten;
list_zusatz = FilesToZusatz();
out_zusatz = prüfen( list_zusatz );
msg( "<-- hier steht was ganz neues--><br>" );
Zusatzmatten = AuswahlForZusatz( out_zusatz, list_zusatz );
document.getElementsByTagName( "body" )[0].onload = "Auswahl1();Auswahl2()";
Auswahl2()
};
function FilesToZusatz()
{
var folder_files = new Array();
var out = new Array();
var out_zusatz = [];
fso = new ActiveXObject("Scripting.FileSystemObject");
folder = fso.getFolder( "O:/SCHNITT_IGES_2003_02_25/A318-A321_SA_Matten" );
files = new Enumerator(folder.Files);
files.moveFirst();
for( ;!files.atEnd(); files.moveNext() )
{
d = files.item().name;
if( d.toLowerCase() != "" )
{
folder_files.push( d );
}
}
for( var i = 0; i < folder_files.length; i++ )
{
out.push( folder_files[i] )
}
var last = "";
var last_out = "";
for( var i = 0; i < out.length; i++ )
{
if( last == out[i].substr( 0, 14 ) )
{
last_out = "";
} else {
last_out = out[i].substr( 0, 14 );
out_zusatz.push( last_out );
}
last = out[i].substr( 0, 14 );
}
return out_zusatz;
};
function prüfen( list_zusatz )
{
var out = [];
var out_zusatz = [];
var last = "";
var last_out = "";
for( var i = 0; i < list_zusatz.length; i++ )
{
out = out.concat( list_zusatz[i].substr( 0,10 ) )
}
for( var i = 0; i < out.length; i++ )
{
if( last == out[i] )
{
last_out = "";
} else {
last_out = out[i];
out_zusatz.push( last_out );
}
last = out[i];
}
return out_zusatz;
};
function AuswahlForZusatz( out, variante )
{
var Zusatzmatten = ""; //-> komplettes Daten-Object für die verkettete Auswahlliste
var Zusatz_HTZ = ""; //-> HTZ als Daten-Object für die verkettete Auswahlliste
var Zusatz_Varianten = ""; //-> Variante als Daten-Object für die verkettete Auswahlliste
var temp_variante = []; //-> einzelne Variante
document.getElementById( "STL_Zusatz_Meldungen" ).innerHTML = '<p class="Zusatzmatten">Zusatzmatte(n) für den Bereich ' + Eingabewerte.Alt_Text + ': <label id="ZusatzLabel" for="Zusatz"></label><select id="Zusatz" name="Zusatz"><option value="--">Bitte wählen:</option></select> <label id="ZusatzVarianteLabel" for="ZusatzVariante"></label><select id="ZusatzVariante" name="ZusatzVariante"><option value="--">Bitte wählen:</option></select>';
for( var i = 0; i < out.length; i++ )
{
//-> HTZ als Auswahlliste erstellen
document.Auswahl.Zusatz.options[document.Auswahl.Zusatz.length] = new Option( out[i], i, false, false );
if( i == out.length-1 )
{
Zusatz_HTZ = Zusatz_HTZ.concat( "'" + i + "' : ['" + i + "', '" + out[i] + "'] " );
} else {
Zusatz_HTZ = Zusatz_HTZ.concat( "'" + i + "' : ['" + i + "', '" + out[i] + "'], " );
}
//-> Variante als Auswahlliste erstellen
var temp_varianten = []; //-> Varianten passend zur HTZ
var temp_Zusatz_Varianten = ""; //-> temporale Variante als Daten-Object für die verkettete Auswahlliste
for( var k = 0; k < variante.length; k++ )
{
if( out[i] == variante[k].substr( 0,10 ) )
{
temp_variante.push( variante[k].substr( 11,3 ) );
temp_varianten = temp_varianten.concat( temp_variante[k] );
}
}
for( var j = 0; j < temp_varianten.length; j++ )
{
if( j == temp_varianten.length-1 )
{
temp_Zusatz_Varianten = temp_Zusatz_Varianten.concat( "['" + out[i] + "', '" + temp_varianten[j] + "'] " );
} else {
temp_Zusatz_Varianten = temp_Zusatz_Varianten.concat( "['" + out[i] + "', '" + temp_varianten[j] + "'], " );
}
}
if( i == out.length-1 )
{
Zusatz_Varianten = Zusatz_Varianten.concat( "'" + i + "' : [ " + temp_Zusatz_Varianten + "] " );
} else {
Zusatz_Varianten = Zusatz_Varianten.concat( "'" + i + "' : [ " + temp_Zusatz_Varianten + "], " );
}
}
var fso = new ActiveXObject("Scripting.Filesystemobject");
file = fso.OpenTextFile("C:/test/Zusatzmattenauswahl.js", 2, true); //-> erstellen der Datei
file.write( "var Zusatzmatten = { 'Zusatz' : { " + Zusatz_HTZ + "}, 'ZusatzVariante' : { " + Zusatz_Varianten + "} };" );
file.close();
};
function ergebnisZeigenZusatz( selected )
{
if( selected.length )
{
var sel = '';
var val = '';
var txt = '';
for( var i = 0; i < selected.length; i++ )
{
sel += ( i>0 ? ' → ' : '') + selected[i].id;
val += ( i>0 ? ' → ' : '') + selected[i].value;
txt += ( i>0 ? ' → ' : '') + selected[i].text;
}
}
};
function Auswahl2()
{
var vkZusatz = new LinkedSelectionZusatz( [ 'Zusatz', 'ZusatzVariante' ], ergebnisZeigenZusatz, Zusatzmatten );
};
Nun will ich aber, bevor er diese function ergebnisZeigenZusatz( selected ) aufruft, diese Dateien einbinden. Wie mache ich das? Oder gibt es einen einfacheren Weg diese Variable „Zusatzmatten“ der function Auswahl2() zu deklarieren?
Wenn ich statt dass Erstellen der Datei es gleich in die Variable „Zusatzmatten“ schreibe, dann kann er damit nix mit den anderen Variablen anfangen, welche diese Optionsdaten erstellen, sprich ich müsste die Variable per Hand erstellen.
Statt so:
var Zusatzmatten = "{ 'Zusatz' : { " + Zusatz_HTZ + "}, 'ZusatzVariante' : { " + Zusatz_Varianten + "} };"
auf so:
var Zusatzmatten = "{ 'Zusatz' : { 'LR5' : ['LR5', 'A340-500'], 'LR6' : ['LR6', 'A340-600'] }, 'ZusatzVariante' : { 'LR5' : [ ['A345_1', '13 / 14'],… " -> so sieht auch die Datei aus, wo die var Zusatzmatte gespeichert ist
Wie gesagt, wenn ich es in die Datei speichere, klappt es, dass er damit was anfangen kann, aber wie rufe ich diese Datei kurz vor der function ergebnisZeigenZusatz() auf?
Und die andere Frage ist, gibt es einen einfacheren Weg, so dass ich den Umweg des in die Datei Speicherns umgehe?
LG Romero