web/data/cubicweb.iprogress.js
author Sylvain Thénault <sylvain.thenault@logilab.fr>
Wed, 09 Feb 2011 18:06:17 +0100
changeset 6957 ffda12be2e9f
parent 5658 7b9553a9db65
permissions -rw-r--r--
[repository] #1460066: backport datafeed cube as cubicweb source * add some attributes to CWSource to handle this kind of source (not natural to put everything in 'config' string). Adding a CWSource subclass has been attempted then rollbacked because it adds pain to handle multi-sources planning and it introduce an ambiguity on a generic relation (cw_source), which may be a penalty in multiple case * data feed sources are a new kind of source, namely 'copy based', which have no effect on the query planner * a data feed source is associated to a list of url and a parser (appobjects in the 'parsers' registry * entities imported by a data feed have cwuri set to their url on the distant site, their cw_source relation point to the data feed source, though their source stored in the entities table (returned by cw_metainformation) is their physical source, hence 'system'

function ProgressBar() {
    this.budget = 100;
    this.todo = 100;
    this.done = 100;
    this.color_done = "green";
    this.color_budget = "blue";
    this.color_todo = "#cccccc"; //  grey
    this.height = 16;
    this.middle = this.height / 2;
    this.radius = 4;
}

ProgressBar.prototype.draw_one_rect = function(ctx, pos, color, fill) {
    ctx.beginPath();
    ctx.lineWidth = 1;
    ctx.strokeStyle = color;
    if (fill) {
        ctx.fillStyle = color;
        ctx.fillRect(0, 0, pos, this.middle * 2);
    } else {
        ctx.lineWidth = 2;
        ctx.strokeStyle = "black";
        ctx.moveTo(pos, 0);
        ctx.lineTo(pos, this.middle * 2);
        ctx.stroke();
    }
};

ProgressBar.prototype.draw_one_circ = function(ctx, pos, color) {
    ctx.beginPath();
    ctx.lineWidth = 2;
    ctx.strokeStyle = color;
    ctx.moveTo(0, this.middle);
    ctx.lineTo(pos, this.middle);
    ctx.arc(pos, this.middle, this.radius, 0, Math.PI * 2, true);
    ctx.stroke();
};

ProgressBar.prototype.draw_circ = function(ctx) {
    this.draw_one_circ(ctx, this.budget, this.color_budget);
    this.draw_one_circ(ctx, this.todo, this.color_todo);
    this.draw_one_circ(ctx, this.done, this.color_done);
};

ProgressBar.prototype.draw_rect = function(ctx) {
    this.draw_one_rect(ctx, this.todo, this.color_todo, true);
    this.draw_one_rect(ctx, this.done, this.color_done, true);
    this.draw_one_rect(ctx, this.budget, this.color_budget, false);
};

function draw_progressbar(cid, done, todo, budget, color) {
    var canvas = document.getElementById(cid);
    if (canvas.getContext) {
        var ctx = canvas.getContext("2d");
        var bar = new ProgressBar();
        bar.budget = budget;
        bar.todo = todo;
        bar.done = done;
        bar.color_done = color;
        bar.draw_rect(ctx);
    }
}