semantics_roles.js 3.85 KB
var roles_display_table = ""; // roles table in html form
var roles_display_table_full = ""; // with lemma role
var role_name = [];           // displayed names of roles
var role_color = [];          // colors assigned to roles

function rolesToHtml(roles_display, full){
    var i, j, k, table;
    table = '<table border="1" style="font-size: 11px">';
    for (i = 0; i < roles_display.length; i++) {
        table += '<tr>';
        for (j = 0; j < roles_display[i].length; j++) {
            table += '<td rowspan="';
            table += roles_display[i][j].rowspan;
            table += '" colspan="';
            table += roles_display[i][j].colspan;
            table += '">';
            if (roles_display[i][j].caption != "None") {
                table += "<b>"
                table += roles_display[i][j].caption;
                table += "</b>"
            }
            for (k = 0; k < roles_display[i][j].roles.length; k++) {
                table += '<div style=';
                if (roles_display[i][j].roles[k].color != 'None') {
                    table += '"background-color: rgb(' + roles_display[i][j].roles[k].color + ')';
                } else {
                    table += '"background: linear-gradient(to ' + roles_display[i][j].roles[k].gradient + ',  rgba(100,100,100,0.1), rgba(100,100,100,1))';
                }
                table += '"><input type="checkbox" name="roles" value="';
                table += roles_display[i][j].roles[k].id;
                table +=  '"><label>';
                table += roles_display[i][j].roles[k].rolename;
                table +=  '</label></div>';
		if (full) {
                    role_name[roles_display[i][j].roles[k].id] = roles_display[i][j].roles[k].rolename;
                    role_color[roles_display[i][j].roles[k].id] = {"color": roles_display[i][j].roles[k].color, "gradient": roles_display[i][j].roles[k].gradient};
		}
            }
            table += '</td>';
        }
        table += '</tr>';
    }
    table += '</table>';

    return table;
}

function isLemma(roles) {
    if (roles.length != 1) {
        return false;
    }
    return (role_name[roles[0]] == 'Lemma');
}

function memorizeRoles(roles_display, roles_full){
    roles_display_table = rolesToHtml(roles_display, false);
    roles_display_table_full = rolesToHtml(roles_full, true);
}

function getStyle(frame_id, complement_num) {
    style_type = "";
    style_color = "";

    style_value = "";
    var roles = frame_content[parseInt(frame_id)].display.roles[complement_num].argument;
    var i;
    for (i = 0; i < roles.length; i++) {
        var color = role_color[roles[i]];
        if (color.gradient != "None") {
        	// Safari browser only
        	if(navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Chrome') == -1) {
        		style_type = "-webkit-linear-gradient(" + color.gradient + ", ";
        	}
        	else {
        		style_type = "linear-gradient(to " + color.gradient + ", ";
        	}  
        } else {
            style_color = color.color
        }
    }
    if (style_type == "") {
        style_type = "background-color";
        style_value = "rgb(" + style_color + ")";
    } else {
    	// Safari browser only
    	if(navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Chrome') == -1) {
    		style_value = style_type + "rgba(" + style_color + ",1), rgba(" + style_color + ",0.1))";
    	}
    	else {
    		style_value = style_type + "rgba(" + style_color + ",0.1), rgba(" + style_color + ",1))";
    	}
        style_type = "background";
    }
    return {"type": style_type, "value": style_value};
}

function isPOL(frame_id, complement_num) {
    var roles = frame_content[parseInt(frame_id)].display.roles[complement_num].argument;
    if (roles.length != 1) {
	return false;
    }
    if (role_name[roles[0]] == 'Lemma') {
	return true;
    } else {
	return false;
    }
}