Breadcrumb
Wiki Home
RTReport
Tools
Sitemap
Einzel Pdf
Struktur Pdf
Mein Wiki
Wiki Manager
Abmelden
Neu
Aktualisiert
art : date
guido
RTReport
v4-indexer-l
Schema Actions
Update 2013-10-28
v3-zu-v4
Report Designer
v4-indexer
Update-2013-11-06

RTReport

Testprojekt

JART Playground aufm HAN

Hands On

Tabelle anlegen

Testdaten eingefügt

DB APP Bulder

Report spezifischer pfad ist immer nach "/prj3/.../appdes/<report-spezifischer-pfad>"

Der RT Report

Alles unter dbadmin_reports --> reports Im Feld App Builders können beistrichgetrennt die "report-spezifischer-pfad"e eingefügt werden

Zuerst muss man den Report mit File>Save speichern, damit man alle applikationen die zur verfügung stehen angezeigt werden. Speicherpfad muss folder indexes/<index-name>/<report-folder>/ sein, also zb indexes/main/...

Funktionen

Sind definiert in prj3/jart-tools/js-apps/rt-report/run/web.cjs, welches zb auch global-handlebars.js importiert.

Handlebars:

  • _date: formatiert das datum; zb {{_date termindatum 'EEE dd.MMM.yyyy'}}
  • _link: niceurl; zb
  • _media_img: {{_media_img termin_bid '&v=Box'}}

Bilder

Feld vom Typ "Upload", subtyp "mediadb"

Tabs

Structure

Zeigt die struktur der DBApp Builder ergebnisse an. Klickt man den Bleistift, fügt sich das gewünschte feld automatisch im report ein (Handlebar Syntax)

Ausgabe filtern

Ausgabe soll zum beispiel nach datum oder "kategorie" oder whatever gefiltert werden. Dazu einfach im DBApp builder eine condition einfügen. Bei der befüllten Applikation auf der Seite in den "Einstellungen" kann man nun die conditionen mit werten befüllen.

Wie kommt der Report auf die Webseite?

Im editiermode "Applikation" einfügen. Hier wählt man den Report aus u speichern. Tadaaaa, er ist da

Debugging

Wenn bei der Seite nix oder das falsche angezeigt wird kann man folgendes überprüfen

  • query parameter debug-sql=y an seite anhängen: zeigt welches SQL ausgeführt wurde
//@import /prj3/jart-tools/js-apps/db-admin/resources/jquery/handlebars-v1.3.0.js
//@import xml-to-json.js
//@import global-handlebars.js

function getJartRequest(url){
    var ret = null;
    ext.strFnc($.filter, "getJSJartRequest", url);
    var node = $.filter.selectSingleNode("/data/fnc-data/getJSJartRequest", $.outNode);
    if(node){
        ret = {};
        convertXToJ(node, ret);
    }
    return ret;
}

function subReport(call, opts){
    var ret = null;
    if(opts){
        for(var n in opts){
            $.filter.params.put(n, opts[n]);
        }
    }
    return  "" + ext.strFnc($.filter, "getSubReport", call);
}


function getJartCall(call, opts){
    var ret = null;
    if(opts){
        for(var n in opts){
            $.filter.params.put(n, opts[n]);
        }
    }
    ext.strFnc($.filter, "getJSJartCall", call);
    var node = $.filter.selectSingleNode("/data/fnc-data/getJSJartCall", $.outNode);
    if(node){
        ret = {};
        convertXToJ(node, ret);
    }
    return ret;
}

function logObject(obj){
    if(obj){
        $.log(JSON.stringify(obj).replace(/","/g, '", "'));
    } else {
        $.log("null");
    }
}

function cleanObject(obj){
    if(typeof obj != "object") return null;
    var ret = {};
    for(var i in obj){
        if(typeof obj[i] == "object"){
            if(Array.isArray(obj[i])){
                if(obj[i].length === 1 && obj[i][0]._text !== null){
                    ret[i] = obj[i][0]._text;
                }
            } else {
                ret[i] = [];
                for(var i2 =0; i2 < obj[i].length; i2++){
                    ret[i].push(cleanObject(obj[i][i2]));
                }
            }
        } else {
            ret[i] = obj[i];
        }
    }
    return ret;
}

function formatJsonToHtml(obj, isSub){
    var ret = "";
    if(typeof obj == "object"){
        ret += "<ul" + (isSub ? ' style="display: none;"' : '') + ">";
        for(var i in obj){
            ret += "<li style="cursor: pointer;" onclick="$('>ul', this).toggle(); event.stopPropagation();">";
            ret += i + ": ";
            ret += formatJsonToHtml(obj[i], true);
            ret += "</li>";
        }
        ret += "</ul>";
    } else {
        ret = "" + obj;
    }
    return ret;
}

function getMediaInfo(img, vc){
    var mUrl = "/pub-prc/img.jart?base=/prj3/" + data["j-project"] + "&img=/images/img-db/" + img.split(":")[1] + vc + "&rel=" + data.rel + "&info=y";
    return getJartRequest(mUrl);
}


function each(a, cb){
    if(!a) return;
    for(var i = 0; i < a.length; i++){
        cb(i, a[i]);
    }
}


Handlebars.registerHelper('_subReport', function(conf, params) {
    if(!conf) return "";
    if(params && typeof params == "string"){
        var p = params.replace(/, /g, ",").split(",");
        var me = this;
        each(p, function(i, v){
            var val = me[v];
            if(val) $.filter.params.put(v, val);
        });
    }
    return new Handlebars.SafeString(subReport(conf));
});

Handlebars.registerHelper('_json2ul', function(ob) {
    if(!ob) return "";
    return new Handlebars.SafeString(formatJsonToHtml(ob));
});

Handlebars.registerHelper('_rt_value', function(val) {
    if(!val) return "";
    return new Handlebars.SafeString(val.replace(/<[/]{0,1}body>/gi, ""));
});

Handlebars.registerHelper('_media_img_src', function(img, vc) {
    var ret = "";
    var imgInfo = getMediaInfo(img, vc);
    if(imgInfo && imgInfo["image-info"] && imgInfo["image-info"].length > 0){
        return imgInfo["image-info"][0].src;
    }
    return new Handlebars.SafeString(ret);
});

Handlebars.registerHelper('_media_img', function(img, vc, _alt) {
    var ret = "";
    if(!img) return ret;
    var alt = _alt;
    var imgInfo = getMediaInfo(img, vc);
    if(imgInfo && imgInfo["image-info"] && imgInfo["image-info"].length > 0){
        var src = imgInfo["image-info"][0].src
        if(!alt){
            if(imgInfo["image-info"][0].title && imgInfo["image-info"][0].title[0]._text){
                alt = imgInfo["image-info"][0].title[0]._text;
            }
            if(imgInfo["image-info"][0].alt && imgInfo["image-info"][0].alt[0]._text){
                alt = (alt ? " " : "") + imgInfo["image-info"][0].alt[0]._text;
            }
        }
        ret = '<img alt="' + (alt ? alt : img) + '" src="' + src + '">';
    }
    return new Handlebars.SafeString(ret);
});

function _lang(str) {
    var ret = '';
    var p = str.split("??");
    var found = false;
    for(var i = 0; i < p.length && !found; i++){
        if(i===0 || data['j-db-lang'] && p[i].indexOf(data['j-db-lang'] + "=") === 0){
            ret = p[i].substr(p[i].indexOf("=") + 1);
        }
    }
    return ret;
}

Handlebars.registerHelper('_lang', function(str) {
    return _lang(str);
});

Handlebars.registerHelper('_log', function(str) {
    $.log(str);
    return "";
});


function link(ext, cid) {
    var lnk = "";
    if(cid){
        lnk = data["j-rlink"] + "&content-id=" + cid + ext;
    } else {
        lnk = data["j-slink"] + ext;
    }

    return "" + Packages.jart.Extension.strFnc($.filter, "getNiceUrlV4", lnk);
}

Handlebars.registerHelper('_link', function(_ext, _cid) {
    var ext = "";
    if(_ext){
        var p = _ext.split(",");
        for(var i = 0; i < p.length; i++){
            ext += "&" + p[i] + "=" + this[p[i]];
        }
    }
    var cid = typeof _cid === "string" ? _cid : null;
    return link(ext, cid); 
});

Handlebars.registerHelper('_j_r_link', function(img, vc) {
    var ret = "";
    ret += data["j-rlink"];
    return new Handlebars.SafeString(ret);
});

Handlebars.registerHelper('_j_s_link', function(img, vc) {
    var ret = "";
    ret += data["j-slink"];
    return new Handlebars.SafeString(ret);
});


//@import runner.js