Kategorien
Benutzer:Sphinx/uk design.js
Zur Navigation springen
Zur Suche springen
Hinweis
Nach dem Speichern sollte zunächst der Browser-Cache geleert werden, bevor man die Auswirkungen der Änderung sehen kann.
Nach dem Speichern sollte zunächst der Browser-Cache geleert werden, bevor man die Auswirkungen der Änderung sehen kann.
- Mozilla/Firefox/Safari: Strg + R (Mactaste + R bei Macintosh) drücken
- Konqueror: F5 drücken
- Opera: kompletten Cache unter Extras → Internetspuren löschen → Individuelle Auswahl leeren
- Internet Explorer: Strg + F5
/* * Erfasst die Tabelle fürs Gegenstandsdesign und bietet dem Benutzer die * Möglichkeit Durchgänge nachzubilden und sich deren Chattexte etc anzeigen * zu lassen. * TODO: Ausnahmen bei Gerundivum/Deklination? */ (function (window, $, undefined) { 'use strict'; var document = window.document, articles = { 'mixed': [ { 'm': 'ein', 'w': 'eine', 'n': 'ein' }, { 'm': 'eines', 'w': 'einer', 'n': 'eines' }, { 'm': 'einem', 'w': 'einer', 'n': 'einem' }, { 'm': 'einen', 'w': 'eine', 'n': 'ein' } ], 'strong': [ { 'm': '', 'w': '', 'n': '' }, { 'm': '', 'w': '', 'n': '' }, { 'm': '', 'w': '', 'n': '' }, { 'm': '', 'w': '', 'n': '' } ], 'weak': [ { 'm': 'der', 'w': 'die', 'n': 'das' }, { 'm': 'des', 'w': 'der', 'n': 'des' }, { 'm': 'dem', 'w': 'der', 'n': 'dem' }, { 'm': 'den', 'w': 'die', 'n': 'das' } ] }, selected_std = { 'uk_design_gateway_type': 0 }, texts = {}, design_onchange = function () { var options = [ // relevante options $('#uk_design_gateway_type option:selected'), // Durchgangsart $('#uk_design_look option:selected'), // Aussehen $('#uk_design_decoration_type option:selected'), // DekoTyp $('#uk_design_decoration_matter option:selected') // DekoStoff ], strings = []; // Texte erstellen strings = build_relevant_texts(options[0], options[1], options[2], options[3]); //console.log(strings); // Chattexte anzeigen $('#uk_design_tester').empty().append( $('<p><b>Chattext</b></p>'), $('<p>' + strings[0] + '</p>'), $('<p>' + strings[1] + '</p>'), $('<p><b>Angezeigter Text auf Feld</b></p>'), $('<p>' + strings[2] + ' (' + get_gateway_action(options[0]) + ')</p>') ); }, build_relevant_texts = function (gateway, look, decoration_type, decoration_matter) { var gateway_string = '', gateway_s = gateway.val().split(' ')[0], gateway_texts = [ 'Chattext noch nicht eingetragen', '', '' ], gr_case = 3; // grammatikalischen Fall anpassen switch (gateway_s) { case '': break; } // Türtext für Chattext erzeugen gateway_string = build_gateway_string(gateway, look, decoration_type, decoration_matter, gr_case, 'mixed'); //console.log('"', gateway_string, '"'); // Türtext in Nominativ gateway_texts[2] = build_gateway_string(gateway, look, decoration_type, decoration_matter, 0, 'mixed'); //console.log(texts[gateway_s], !texts[gateway_s].length) if (texts[gateway_s][0] !== '') { // kein Chattext erfasst // chattexte erstellen gateway_texts[0] = texts[gateway_s][0].replace(/%gateway_string%/, gateway_string); gateway_texts[1] = texts[gateway_s][1].replace(/%gateway_string%/, gateway_string); } return gateway_texts; }, build_gateway_string = function (gateway, look, decoration_type, decoration_matter, gr_case, flexion) { var gateway_gender = gateway.attr('data-gender'), // Geschlecht des Durchgangs parts = []; // ein/der/- parts.push(articles[flexion][gr_case][gateway_gender]); // Dekoration Aussehen Durchgangsart parts.push(build_decoration(decoration_type, decoration_matter, gateway_gender, gr_case)); parts.push(build_look(look, gateway_gender, flexion, gr_case)); parts.push(build_gateway(gateway, gateway_gender, gr_case)); // leere Teile löschen return $.grep(parts, function (s) { // filter return !!$.trim(s).length; // true für length > 0 }).join(' '); }, build_look = function (look, gender, suffix_type, gr_case) { if (look.length) { // keine leere option // adjektiv deklinieren return adjective_declense($(look).val().trim(), gender, suffix_type, gr_case); } else { return ''; } }, build_decoration = function(type, matter, gender) { var words = []; // deko-art übergeben if (type.length && type.val() !== 'keine') { words = type.val().trim().split(' '); // wörter words[1] = matter.val().trim(); // Material ersetzen words[2] = verb_gerund(words[2], gender); // Gerundivum des Verbs bilden return words.join(' '); } else { return ''; } }, build_gateway = function(gateway) { if (gateway.length) { // Durchgangsart gegeben /* * Durchgangsarten sind mit "Durchgang (Tätigkeit)" gegeben. * Daher nur erstes Wort matchen */ return $(gateway).val().trim().match(/^([a-zä-üß\-]+)/i)[1]; } else { return ''; } }, get_gateway_action = function (gateway) { if (gateway.length) { // Durchgangsart gegeben return $(gateway).val().trim().match(/\(([a-zä-üß\-]+)\)/i)[1] } else { return ''; } }, adjective_declense = function (adjective, gender, suffix_type, gr_case) { gr_case = gr_case || 0; // suffixe nach geschlecht, flexionsart und grammatikalischem fall var suffixe = { 'mixed': [ { 'm': 'er', 'w': 'e', 'n': 'es' }, { 'm': 'en', 'w': 'en', 'n': 'en' }, { 'm': 'en', 'w': 'en', 'n': 'en' }, { 'm': 'en', 'w': 'e', 'n': 'es' } ], 'strong': [ { 'm': 'er', 'w': 'e', 'n': 'es' }, { 'm': 'en', 'w': 'er', 'n': 'en' }, { 'm': 'em', 'w': 'er', 'n': 'em' }, { 'm': 'en', 'w': 'e', 'n': 'es' } ], 'weak': [ { 'm': 'e', 'w': 'e', 'n': 'e' }, { 'm': 'en', 'w': 'en', 'n': 'en' }, { 'm': 'en', 'w': 'en', 'n': 'en' }, { 'm': 'en', 'w': 'e', 'n': 'e' } ] }; return adjective.toLowerCase() + suffixe[suffix_type][gr_case][gender]; }, // Gerundivum verb_gerund = function (verb, gender) { var suffixe = { 'm': 'er', 'w': 'e', 'n': 'es' }; return verb + suffixe[gender]; }; $(document).ready(function () { var uk_design_table = $('table#uk_design'); // chattexte erfassen $('#uk_design_gateway_type li').each(function (i, entry) { // siehe build_gateway() var gateway = $(entry).text().match(/^[a-zä-üß]+/i)[0]; texts[gateway] = [ $('.uk_design_chattext_src', entry).text().trim(), $('.uk_design_chattext_des', entry).text().trim() ]; }); //console.log(texts); if (uk_design_table.length > 0) { // design table erfasst $('td', uk_design_table).each(function (i, cell) { // select menü für auswahl var select = $('<select/>', { change: design_onchange, size: $('li', cell).length }); // jeden Listeneintrag in select überführen $('li', cell).each(function (i, entry) { var option = null, // versteckten Text später abschneiden slice_length = $(':hidden', entry).text().length, text = $(entry).text().trim(); /* * ausgeblendete Elemente werden mit text() erfasst und * muessen wieder entfernt werden. Daher per Konvention * ausgeblendeten Text ans Ende setzen */ if (slice_length) { text = text.slice(0, -slice_length); } // option erstellen option = $('<option/>', { 'data-gender': $('.uk_design_gender', entry).text(), html: text, value: text }); // Standardoption gegeben if (selected_std[cell.id] === i) { option.attr('selected', 'selected'); } // anfügen option.appendTo(select); }); // select anzeigen select.appendTo(cell); // Liste ausblenden $('ul', cell).hide(); }); // init $('select:first').change(); } }); }(window, $));