private void drawPie(Writer writer, Map<String, Integer> data, String elementID) throws IOException { List<PieSort> pieList = topX(data, 9); String dataID = "data_" + elementID; writer.append("<script type='text/javascript'>"); writer.append("\n").append("$(function () {"); writer.append("\n").append(" var " + dataID + " = [];"); int i = 0; for (PieSort p : pieList) { writer.append("\n").append( dataID + "[" + i + "] = { label: '" + p.key + "', data: " + p.value + " };"); i++; } writer.append("\n").append(" $.plot($('#" + elementID + "'), " + dataID + ", {"); writer.append("\n").append(" series: {"); writer.append("\n").append(" pie: {"); writer.append("\n").append(" show: true"); writer.append("\n").append(" }"); writer.append("\n").append(" }"); writer.append("\n").append(" });"); writer.append("\n").append("});"); writer.append("</script>"); }
@Override public void execute(Environment env, @SuppressWarnings("rawtypes") Map params, TemplateModel[] loopVars, TemplateDirectiveBody body) throws TemplateException, IOException { StringModel projectStringModel = (StringModel) params.get("project"); ProjectModel projectModel = (ProjectModel) projectStringModel.getWrappedObject(); String filename = projectModel.getRootFileModel().getPrettyPath(); TemplateBooleanModel recursiveBooleanModel = (TemplateBooleanModel) params.get("recursive"); boolean recursive = recursiveBooleanModel.getAsBoolean(); SimpleScalar elementIDStringModel = (SimpleScalar) params.get("elementID"); String elementID = elementIDStringModel.getAsString(); TypeReferenceService typeReferenceService = new TypeReferenceService(context); Map<String, Integer> data = typeReferenceService.getPackageUseFrequencies(projectModel, 2, recursive); if (data.keySet().size() > 0) { drawPie(env.getOut(), data, elementID); } else { // if we aren't drawing a pie, remove the element that would have held it Writer writer = env.getOut(); writer.append("<script type='text/javascript'>"); writer.append("$('#" + elementID + "').parent().remove()"); writer.append("</script>"); } }
drawPie(env.getOut(), data, elementID);
private void drawPie(Writer writer, Map<String, Integer> data, String elementID) throws IOException { List<PieSort> pieList = topX(data, 9); String dataVarName = "data_" + elementID; writer.append("<script type='text/javascript'>"); writer.append(System.lineSeparator()+" WINDUP_PACKAGE_PIE_DATA = typeof(WINDUP_PACKAGE_PIE_DATA) == 'undefined' ? {} : WINDUP_PACKAGE_PIE_DATA;"); writer.append(System.lineSeparator()+" WINDUP_PACKAGE_PIE_DATA['").append(elementID).append("'] = [];"); for (PieSort p : pieList) { writer.append(System.lineSeparator()+" WINDUP_PACKAGE_PIE_DATA['").append(elementID).append("'].push({label: '" + p.label + "', data: ") .append(p.value.toString()).append("});"); } writer.append(System.lineSeparator()+" $(function () {"); writer.append(System.lineSeparator()+" var " + dataVarName + " = [];"); for (PieSort p : pieList) writer.append(System.lineSeparator()+" ").append(dataVarName).append(".push({ label: '").append(p.key).append("', data: ").append(p.value.toString()).append(" });"); writer.append(System.lineSeparator()+" $.plot($('#" + elementID + "'), " + dataVarName + ", {"); writer.append(System.lineSeparator()+" series: { pie: { show: true, innerRadius: 0.55, offset: { top: 0, left: -120 } } },"); writer.append(System.lineSeparator()+" colors: $.map( " + dataVarName + ", function(item, index) {" + System.lineSeparator()+" var len = " + dataVarName + ".length;" + System.lineSeparator()+" return jQuery.Color({" + System.lineSeparator()+" hue: ((index*0.95*360/len) + 90/len) % 360," + System.lineSeparator()+" saturation: 0.95," + System.lineSeparator()+" lightness: ((index%4 == 3 ? 1:0)/-4)+0.55, alpha: 1" + System.lineSeparator()+" }).toHexString();" + System.lineSeparator()+" })"); writer.append(System.lineSeparator()+" });"); writer.append(System.lineSeparator()+" });"); writer.append("</script>"); }
drawPie(env.getOut(), data, elementID);
private void drawPie(Writer writer, Map<String, Integer> data, String elementID) throws IOException { List<PieSort> pieList = topX(data, 9); String dataVarName = "data_" + elementID; writer.append("<script type='text/javascript'>"); writer.append(System.lineSeparator()+" WINDUP_PACKAGE_PIE_DATA = typeof(WINDUP_PACKAGE_PIE_DATA) == 'undefined' ? {} : WINDUP_PACKAGE_PIE_DATA;"); writer.append(System.lineSeparator()+" WINDUP_PACKAGE_PIE_DATA['").append(elementID).append("'] = [];"); for (PieSort p : pieList) { writer.append(System.lineSeparator()+" WINDUP_PACKAGE_PIE_DATA['").append(elementID).append("'].push({label: '" + p.label + "', data: ") .append(p.value.toString()).append("});"); } writer.append(System.lineSeparator()+" $(function () {"); writer.append(System.lineSeparator()+" var " + dataVarName + " = [];"); for (PieSort p : pieList) writer.append(System.lineSeparator()+" ").append(dataVarName).append(".push({ label: '").append(p.key).append("', data: ").append(p.value.toString()).append(" });"); writer.append(System.lineSeparator()+" $.plot($('#" + elementID + "'), " + dataVarName + ", {"); writer.append(System.lineSeparator()+" series: { pie: { show: true, innerRadius: 0.55, offset: { top: 0, left: -120 } } },"); writer.append(System.lineSeparator()+" colors: $.map( " + dataVarName + ", function(item, index) {" + System.lineSeparator()+" var len = " + dataVarName + ".length;" + System.lineSeparator()+" return jQuery.Color({" + System.lineSeparator()+" hue: ((index*0.95*360/len) + 90/len) % 360," + System.lineSeparator()+" saturation: 0.95," + System.lineSeparator()+" lightness: ((index%4 == 3 ? 1:0)/-4)+0.55, alpha: 1" + System.lineSeparator()+" }).toHexString();" + System.lineSeparator()+" })"); writer.append(System.lineSeparator()+" });"); writer.append(System.lineSeparator()+" });"); writer.append("</script>"); }