(function(){ "use strict"; KC3StrategyTabs.translations = new KC3StrategyTab("translations"); KC3StrategyTabs.translations.definition = { tabSelf: KC3StrategyTabs.translations, /* INIT Prepares all data needed ---------------------------------*/ init:function(){ }, showDict: function(jsonData, originalJson) { var keys = Object.keys( jsonData ); keys.sort(); var language = ConfigManager.language; var jsonToggleFunc = function() { $(".tr-json", $(this).parent()).toggle(); }; $.each( keys, function(i,k) { var v = jsonData[k]; var row = $(".factory .tr-item").clone(); var nested = function(obj){ if(Array.isArray(obj)){ return obj.length === 0 ? {} : nested(obj[0]); } if(typeof obj === "object"){ if(!!obj.tag){ return obj; } var n = obj[Object.keys(obj)[0]]; return !n ? {} : !n.tag ? nested(n) : n; } return obj; }; var tag = v.tag || nested(v).tag || language; row.addClass( language === tag ? "translation_done" : "translation_missing" ); $(".tr-key",row).text(k); $(".tr-key",row).click(jsonToggleFunc); $(".tr-from",row).text(tag); if(!v.val && (Array.isArray(v) || typeof v === "object") ){ $(".tr-content",row).text(JSON.stringify(originalJson[k])); } else { if($("#html-rendering").is(":checked")){ $(".tr-content",row).html(v.val); } else { $(".tr-content",row).text(v.val); } } $(".tr-json",row).text('{0}:{1},'.format(JSON.stringify(k), JSON.stringify(originalJson[k]))); row.appendTo( "#tr-container" ); }); }, showQuests: function(jsonData, originalJson) { var keys = Object.keys( jsonData ); keys.sort(); var language = ConfigManager.language; var jsonToggleFunc = function() { $(".tq-json", $(this).parent()).toggle(); }; $.each( keys, function(i,k) { var v = jsonData[k]; var row = $(".factory .tq-item").clone(); var questWikiCode = (v.code && v.code.val) ? v.code.val : "???"; var questIdPretty = k + " (" + questWikiCode + ")"; var questName = v.name.val; var questDesc = v.desc.val; var questMemo = v.memo ? v.memo.val : false; var questNameL = v.name.tag; var questDescL = v.desc.tag; row.addClass( language === v.name.tag && language === v.desc.tag ? "translation_done" : "translation_missing" ); $(".tq-key",row).text(questIdPretty); $(".tq-key",row).click(jsonToggleFunc); $(".tq-from",row).text( questNameL + "/" + questDescL); $(".tq-name",row).text(questName).addClass( language === v.name.tag ? "translation_done" : "translation_missing"); $(".tq-desc",row).text(questDesc).addClass( language === v.desc.tag ? "translation_done" : "translation_missing"); if(questMemo){ if($("#html-rendering").is(":checked")){ $(".tq-memo",row).html(questMemo.replace(/\n/g,"
")).addClass( language === v.desc.tag ? "translation_done" : "translation_missing"); } else { $(".tq-memo",row).text(questMemo.replace(/\n/g,"\\n")).addClass( language === v.desc.tag ? "translation_done" : "translation_missing"); } } $(".tq-json",row).text('{0}:{1},'.format(JSON.stringify(k), JSON.stringify(originalJson[k]))); row.appendTo( "#tr-container" ); }); }, showServers: function(jsonData) { // re-index objects var servers = []; $.each(jsonData, function(ip, dat) { servers.push( {ip: ip, dat: dat }); }); servers.sort( function(a,b) { return a.dat.num.val - b.dat.num.val; }); var language = ConfigManager.language; $.each(servers, function(i, d) { console.log(d); var row = $(".factory .tr-item").clone(); row.addClass( language === d.dat.name.tag ? "translation_done" : "translation_missing" ); $(".tr-key",row).text("(" + d.dat.num.val + ") " + d.ip); $(".tr-from",row).text(d.dat.name.tag); $(".tr-content",row).html(d.dat.name.val); row.appendTo( "#tr-container" ); }); }, /* EXECUTE Places data onto the interface ---------------------------------*/ execute: function() { var self = this; var defs = { terms: { callback: self.showDict }, items: { callback: self.showDict }, equiptype: { callback: self.showDict }, useitems: { callback: self.showDict }, ships: { callback: self.showDict }, ship_affix: { callback: self.showDict }, quests: { callback: self.showQuests }, battle: { callback: self.showDict }, servers: { callback: self.showServers }, stype: { callback: self.showDict }, ranks: { callback: self.showDict } }; $.each(defs, function(k,v) { $("#select-json-file").append( $("").val(k).text(k)); }); $("#chk-missing-only").click( function() { $(".translation_done").toggle( ! this.checked); }); $("#html-rendering").click( function() { $("#select-json-file").change(); }); $("#select-json-file").change( function() { $("#tr-container").empty(); $("#chk-missing-only").attr("checked",false); $("#error").empty().hide(); var repo = "../../data/"; var translation = KC3Translation.getJSONWithOptions( repo, this.value, true, ConfigManager.language, false, false, false); var translationWithSource = KC3Translation.getJSONWithOptions( repo, this.value, true, ConfigManager.language, false, false, true); var callback = defs[this.value].callback; callback.apply(self,[translationWithSource, translation]); } ); $("#select-json-file").val("terms").change(); } }; })();