<-- brushing ----------------------------------------------------------------------------------------------->
// // loading meta information // d3.json("meta", { // headers: { // 'Accept': 'application/json' // }}).then(function(data) { // into here // //console.log ("loaded", data); // // update_globals( data.grid, data.dims ); // // image_dims = DIMS; // data.split("x").map(s => { return +s }); // convert to numbers // //console.log ("loaded meta", image_dims); // // universe.attr("width", image_dims[0]); // // universe.attr("height", image_dims[1]); // // pyramid = universe2pyramid(image_dims, WIDTH); // // logger.mappo.log('meta load finished', 'INFO'); // }); // d3.json("documents/meta", { // headers: { // 'Accept': 'application/json' // }}) // .then(function(data) { // DOCUMENT_BATCH_SIZE = data['batch-size']; // NR_DOCUMENTS = data['total']; // logger.mappo.log (`documents: total ${NR_DOCUMENTS}`, 'INFO'); // + '; batch size: ' + DOCUMENT_BATCH_SIZE); // DOCUMENT_BATCH_FETCHES = Math.floor (NR_DOCUMENTS / DOCUMENT_BATCH_SIZE + 0.5); // how oft do I need to fetch everything // if (DOCUMENT_BATCH_FETCHES >= 10) { // DOCUMENT_SET = [ 10.0, FILL_LEVELS10 ]; // } else if (DOCUMENT_BATCH_FETCHES >= 5) { // DOCUMENT_SET = [ 20.0, FILL_LEVELS5 ]; // } else if (DOCUMENT_BATCH_FETCHES >= 3) { // DOCUMENT_SET = [ 33.33333333333, FILL_LEVELS3 ]; // } else if (DOCUMENT_BATCH_FETCHES >= 2) { // DOCUMENT_SET = [ 50.0, FILL_LEVELS2 ]; // } else { // DOCUMENT_SET = [ 100.0, FILL_LEVELS1 ]; // } // // console.log ("SET", DOCUMENT_SET); // // console.log ("vertical", documents_control.mappo); // origin_search_button.activate(); // we start with search // elastic_rect_button.activate(); // we start with circles // //console.log( origin_controller.current); // // origin_controller.current.enable(); // signal that button is enabled // // origin_controller.current.activate(); // signal that button is active // grid_button .enable(); // }) // .catch(error => { // console.error(error); // }) // ; // d3.json("islands/meta", { // headers: { // 'Accept': 'application/json' // }}) // .then(function(data) { // into here // //console.log ("island meta", data); // MAX_ISLANDS = +data.depth; // convert into number // logger.mappo.log (`islands: layers ${MAX_ISLANDS}`, 'INFO'); // // for (var i = 0; i < MAX_ISLANDS; i++) { // make sure we have layers for each island set // // L_islands.insert("g") // // .attr("id", "islands-"+i); // // } // // }).then(function() { // // load_islands(); // // }) // // .catch(error => { // // console.error(error); // // }); /* line-height: 8px; width: 8px; @media only screen and (max-width : 1500px) { .material-icons { font-size: 15px; } .mdl-button--fab { font-size: 12px; height: 28px; width: 28px; } .mdl-button--fab .material-icons { transform: translate(-12px, -12px); } } @media only screen and (min-width: 1500px) { .material-icons { font-size: 32px; } .mdl-button--fab { font-size: 32px; height: 56px; width: 56px; } .mdl-button--fab .material-icons { transform: translate(-16px, -13px); } } */ //-- escalatory iframes -------------------------------------------------------- //var escalation_button; //const IFRAME_WIDTH = 700; // in screen coordinates, TODO: adapt ti HEIGHT/WIDTH //const IFRAME_HEIGHT = IFRAME_WIDTH * Math.SQRT2; // for testing only // if(1) { // // var bb = ma // // var sourceBox = this.getBoundingClientRect(); // console.log( controller.c ); // var g = zoomer.append('g') // ; // var tester = g.append('circle') // .attr('cx', +55) // .attr('cy', +400) // .attr('r', 100) // .attr('fill', 'black') // .on('mouseout', function() { // console.log('muuuuuuuuuuu'); // }) // .on('mouseover', function() { // console.log('mooooooooooooo', d3.event.shiftKey, d3.event); // }) // .on('keypress', function() { // console.log(d3.event.keyIdentifier); // }) // // g.append('circle') // // .attr('cx', CENTER_X) // // .attr('cy', CENTER_Y) // // .attr('r', 50) // // .attr('fill', 'red') // // .style('opacity', '50%') // // ; // } // if (0 ) { // var g = zoomer.append('g') // ; // var tester = g.append('circle') // .attr('cx', CENTER_X) // .attr('cy', CENTER_Y) // .attr('r', 10) // .attr('fill', 'black') // .on('mouseover', function() { // console.log('mo'); // g.append('circle') // .attr('cx', CENTER_X) // .attr('cy', CENTER_Y) // .attr('r', 10) // .attr('fill', 'red') // .on('mouseout', function() { // console.log('mu'); // d3.select (this).remove(); // }) // // .transition() // // .style("opacity", 0) // // .duration(5000) // // .remove() // ; // }) // ; // } // var controller; // forward reference // async function controller_settled() { // var timeout0; // logger.mappo.log(`settle controller' ${controller}`, 'DEBUG'); // while (controller === undefined) { // // console.log('wait controller'); // clearTimeout(timeout0); // timeout0 = setTimeout( () => {}, 100); // } // logger.mappo.log(`got controller' ${controller}`, 'DEBUG'); // } // var image_dims; // forward reference // = [ 4000, 3000 ]; // image pixels // async function dims_settled() { // var timeout1; // logger.mappo.log(`settle dims' ${image_dims}`, 'DEBUG'); // while (image_dims === undefined) { // clearTimeout(timeout1); // timeout1 = setTimeout( () => {}, 100); // } // logger.mappo.log(`got dims' ${image_dims}`, 'DEBUG'); // } // async function settle() { // await controller_settled(); // await dims_settled(); // } //----------------------------------------------------------------------------------------------- // var intercept_button; // var magnifier_button; // fwd ref // var fisheye_button; // fwd ref // var support_button; // var welcome_button; // var releases_button; // var escalation_button; xxxoverlay_escalation_old( g, pointerish ) { // var g = d3.select( r.parentNode.parentNode ); //console.log ('overlay group', g); var d = g.data()[0]; //console.log('data?', d); //console.log('id', g.attr('id')); //console.log(g.attr('transform')); var w = g.selectAll('rect').attr('width'); // iframe will have this size first var scale = w / IFRAME_WIDTH; var t = str2transform( g.attr('transform') ); //console.log('transform', t); let [x0, y0] = [ t.translateX, t.translateY ]; // left-top of document rectangle var g2 = L_escalates .append('g') .attr('transform', `translate(${x0},${y0}) scale(${scale})`) .on( 'mouseout', function () { d3.select( this ) .transition() .attr('transform', `translate(${x0},${y0}) scale(${scale})`) .style("opacity", 0.0) .remove() ; L_magnifier.transition().style( 'opacity', 1 ); L_documents.transition().style( 'opacity', 1 ); }) ; var a; // anchors below if ( intercept_button.is_activated() ) { a = g2.append('a') .on( 'click', function() { var sourceBox = this.getBoundingClientRect(); var i = intercept_button.semantics.intercept( d ); var target = intercept_button.semantics.intercepts.node().childNodes[i]; //console.log('target', target); var targetBox = target.getBoundingClientRect(); //console.log( targetBox ); svg.append( 'rect' ) .attr('x', sourceBox.x) .attr('y', sourceBox.y) .attr('width', sourceBox.width) .attr('height', sourceBox.height) .attr('stroke', 'red') .attr('fill', 'none') .transition() .duration(1000) // .style('opacity', 0) .attr('x', targetBox.x) .attr('y', targetBox.y) .attr('width', targetBox.width) .attr('height', targetBox.height) .remove() .on('end', function() { intercept_button.semantics.redraw( intercept_button ); }) ; }); } else { a = g2.append('a') .attr ("xlink:href", `https://metacpan.org/pod/${d.label}`) .attr('target', '_top') ; } a .append('foreignObject') .attr('height', IFRAME_HEIGHT) .attr('width', IFRAME_WIDTH) .append("xhtml:iframe") .attr("sandbox", "allow-scripts") .attr("height", "100%") .attr("width", "100%") .attr("src", `https://fastapi.metacpan.org/v1/pod/${d.label}?content-type=text/html`) .style('background-color', pointerish ? 'rgb(245 226 187 / 66%)' : 'white') // .style('background-color', pointerish ? 'yellow' : 'white') .style('pointer-events', pointerish ? 'none' : 'all') ; // add animation to larger version // go to screen coordinates let [X,Y] = universe2screen( x0, y0 ); // in screen coordinates var LEFT_TOP = [X, MARGIN_Y + 20]; // left-top of final iframe in screen coords var H = HEIGHT - 2 * MARGIN_Y; // good height of iframe var RIGHT_BOTTOM = [ LEFT_TOP[0] + H/Math.SQRT2, LEFT_TOP[1] + H ]; // back to universe let [x1,y1] = screen2universe( LEFT_TOP[0], LEFT_TOP[1] ); // back to our universe let [x2,y2] = screen2universe( RIGHT_BOTTOM[0], RIGHT_BOTTOM[1] ); // ditto var scale2 = ( y2 - y1 ) / IFRAME_HEIGHT; g2 .transition() .duration(500) .attr('transform', `translate(${x1},${y1}) scale(${scale2})`) ; L_magnifier.transition().style( 'opacity', 0 ); L_documents.transition().style( 'opacity', 0 ); } }, // horizontal : { // scale : 1.0, // more : function ( self ) { // this.scale *= 1.1; // sort of 10% // self.semantics.rescale( this.scale ); // // self.semantics.rescale( this.scale * intercept_button.vertical.stretch); // }, // less : function ( self ) { // this.scale *= 1 / 1.1; // ~10% decrease // self.semantics.rescale( this.scale ); // // self.semantics.rescale( this.scale * intercept_button.vertical.stretch ); // }, // more2go : function (self) { // return 0; // this.scale < 2; // }, // less2go : function (self) { // return 0; // this.scale > 0.5; // }, // left : { id : 'intercepts-smaller-button', title : 'Smaller Intercepts'}, // right : { id : 'intercepts-bigger-button', title : 'Bigger Intercepts' }, // }, //console.log( "assert", this.detachments ); // self.horizontal.stretch = s; // this.redraw( self ); // var config = self.vertical.configs[ self.vertical.DINA4 ]; // how many documents we are supposed to show, etc. // var [ l, h, w, s ] = config; //#of frames, height, width, squash // this.urls.splice( l ); // adapt to new length // //console.log( "assert urls", this.urls ); // this.detachments = []; // start all over // for (var i = 0; i < l; i++) { // hey, a for loop, what a language.... // this.urls[i] = this.urls[i] === undefined ? { id: null, url: null } : this.urls[i]; // this.detachments[i] = { // height : h-4, // width : w-4, // id : this.urls[i].id, // url : this.urls[i].url, // }; // } // //console.log( "assert", this.detachments ); // self.horizontal.stretch = s; // this.redraw( self ); // this.intercepts // .style('transform', `scale(${1 / scale})` ); // this.intercepts.selectAll('div.intercepty-outer') // .style('transform', `scale(${ scale})` ); // this.intercepts.selectAll('iframe') // .style('transform', `scale(${scale})` ); // } else { // controller.c.style('max-width', undefined); // unconstrained room for the controller // cb = controller.box(); // function fit_As(width, height) { // var A_height = width * Math.SQRT2; // compute necessary vertical for A-series // var As = height / A_height; // how many would go vertical? could be < 1 // console.log(As); // if (As < 1) { // var nr_As = Math.ceil(1 / As); // horizontally // console.log('nr hor', nr_As); // var u_width = Math.floor( width / nr_As ); // - 1.5*vw; // var u_height = u_width * Math.SQRT2; // - 2*vh; // return [ nr_As, u_width, u_height ] // } else { // var nr_As = Math.floor(As); // vertically // console.log('nr vert', nr_As); // var u_height = Math.floor( height / nr_As ); // - 2*vh; // var u_width = u_height / Math.SQRT2; // - 1.5*vw; // return [ nr_As, u_width, u_height ] // } // } // var U_WIDTH = WIDTH - cb.width; // var U_HEIGHT = HEIGHT; // if (U_WIDTH > INTERCEPT_MIN_WIDTH) { // there is room on the right (all px) // var width = WIDTH - cb.width; // take this room // [ nr_As, intercept_width, intercept_height ] = fit_As(width, HEIGHT); // // if (nr_As == 0) { // not enough vertical space for any A in portrait => horizontal intercepts // // intercept_height = HEIGHT - 2*vh; // use all available height // // } else { // vertical // // intercept_height = (nr_As * A_height) + 'px'; // use multiples of A_height // // } // // intercept_width = width + 'px'; // } else { // TODO: control via button // controller.c.style('max-width', '70vw'); // complement size // cb = controller.box(); // intercept_width = (100 - 30 - 1) * vw; // TODO: get from button // intercept_height = intercept_width * Math.SQRT2; // } // console.log('redraw', this.detachments, self.horizontal.stretch); // this.intercepts // .style('width', (INTERCEPT_WIDTH / self.horizontal.stretch)+'px') // .style('height', (INTERCEPT_HEIGHT / self.horizontal.stretch)+'px') // .attr('x', (WIDTH - INTERCEPT_WIDTH / self.horizontal.stretch )+'px') // .attr('y', 90 / self.horizontal.stretch +'px') // .style('transform', `scale(${self.horizontal.stretch * self.horizontal.scale})` ) // ; // var div = this.intercepts.append('xhtml:div') // .attr('id', 'intercepts') // ; // rescale : function(scale) { // this.intercepts // .transition() // .duration(500) // .style('transform', `scale(${scale})` ) // ; // }, // .on( 'click', function() { // var f = d3.select( this ).select('iframe'); // f .classed('pointer-passive', ! f.classed('pointer-passive')); // f .classed('pointer-active', ! f.classed('pointer-active')); // ; // }) //-- low-level drawing/rescaling functions -------------------------------------------------- // function circle_elastic_withdraw () { // L_documents // .selectAll("g") // .remove(); // } // function circle_elastic_redraw (documents, impactColor) { // //console.log("elastic redraw", documents); // var t_results = L_documents // .selectAll("g") // .data(documents, function(d) { return d.id }) // ; // t_results // .attr("transform", function(d) { // return `translate(${d.x},${d.y})`; // }) // ; // // t_results.select('title') // // .text( function( d ) { return 'xxxxxxxxxxxxxxxxxxxxx'; } ) // // ; // // t_results // update // // .select('a') // // .attr ("xlink:href", function(d,i) { return "/documents/" + d.id; } ) // // .attr ("xlink:show", function(d,i) { return "new_" + d.id; }) // // ; // t_results // update // .select('circle') // .attr( 'r', function(d) { return d.r; }) // .attr( 'fill', function(d) { return impactColor( d.impact ) } ) // ; // t_results.enter() // .append("g") // .attr( "id", function(d) { return d.id }) // .append("a") // .attr ("xlink:href", function(d,i) { return `https://metacpan.org/pod/${d.label}`; } ) // .append("circle") // .attr( 'fill', function(d) { return impactColor( d.impact ) } ) // .attr( 'r', function(d) { return d.r; }) // .on( 'mouseover', function () { // var v = d3.select (this).data()[0]; // //console.log (v); // escalation_button.semantics.escalate( v, d3.event.shiftKey ); // d3.select( this ) // .style('opacity', '0.5') // .style('fill', 'red'); // make it opaque to signal it has been seen // // if (magnifier_button.mappo.is_activated()) { // // L_magnifier.select('#mag'+v.id) // // .select('text') // // .style('opacity', '0.5') // // .style('fill', 'red'); // // } // }) // .on( 'mouseout', function () { // // var v = d3.select (this).data()[0]; // d3.select( this ) // .style('fill', 'white'); // make it opaque to signal it has been seen // // if (magnifier_button.mappo.is_activated()) { // // L_magnifier.select('#mag'+v.id) // // .select('text') // // .style('fill', 'white'); // // } // }) // .append('title').text( function( d ) { return d.label; } ) // ; // t_results.exit().remove(); // L_documents.style( 'display', 'block' ); // } // show_magnifier_labels(t0, newbies); // L_documents.selectAll('g') // .each(function(d) { // if (is_a_inside_r( [d.x, d.y], [ xf, yf, xf + W, yf + W ])) { // console.log("inside", d.id); // var magnify = 1/magnifier_button.mappo.vertical.focus; // d3.select(this).attr('transform', transform2str( { translateX : (d.x - xf) * magnify + t0.translateX, // 1/magnifier_button.mappo.vertical.focus // translateY : (d.y - yf) * magnify + t0.translateY, // scaleX : magnify } ) ) // ; // } else { // d3.select(this).attr('transform', transform2str( { translateX : d.x, // translateY : d.y, // scaleX : 1 } ) ) // ; // } // }) // ; // 'old_rescale' : function( factor, focus ) { // var w1 = +lense.attr('width'); // current lense width // var w2 = w1 * factor; // future width // lense // resize lense // .attr('width', w2) // .attr('height', w2) // ; // { // move the whole thing by delta_x left and up // var t = str2transform( magnifier.attr('transform') ); // t.translateX -= (w2-w1)/2; // t.translateY -= (w2-w1)/2; // t.scaleX = t.scale; // // console.log(t, transform2str( t )); // magnifier.attr('transform', transform2str( t )); // } // this.refocus( focus ); // this.doczoom( t, focus ); // }, // 'bigger' : function( focus ) { // this.rescale(6/5, focus ); // }, // 'smaller' : function( focus ) { // this.rescale(5/6, focus ); // }, // function magnifier_text_height(indent, N) { // // let test = L_magnifier.append('text').text('xxxxXXX').style('font-size', '40px').classed('magnifier-label', true).attr('x',0).attr('y', 0); // // console.log("BB", test.node().getBBox(), N); // let text_height = ~~(( +lense.attr('width') - 2 * indent ) / N ); // // console.log("full text height", text_height); // if (text_height < 25) { // check for lower limit // text_height = 25; // N = ~~( ( +lense.attr('width') - 2 * indent ) / text_height ); // recompute entries which can be handled // } else if (text_height > 60) { // text_height = 60; // } // // test.remove(); // return [ text_height, N ]; // } // function show_magnifier_labels(t0, newbies) { // let right_boundary = t0.translateX + (+lense.attr('width')); // let top_boundary = t0.translateY; // // console.log(right_boundary, top_boundary); // let indent_x = 40; // px // let indent_y = 20; // px // let [ text_height, N ] = magnifier_text_height(indent_y, newbies.length); // // console.log("text height", text_height, "N", N); // newbies = newbies.slice(0, N); // reduce them, in case // let labels = L_magnifier.selectAll('g.magnifier-label') // .data(newbies, (d) => { return d.id }) // ; // labels // .attr('id', (d) => { return 'mag'+d.id } ) // .select('text') // .style('font-size', text_height+'px') // .style('opacity', function(d) { // return L_documents.select('#'+d.id) // .selectAll('*') // .style('opacity') // }) // .attr('x', (d, i) => { return right_boundary + indent_x }) // .attr('y', (d, i) => { return top_boundary + indent_y + (i+1) * text_height }) // .text( (d) => { return d.label } ) // ; // labels.enter() // .append('g') // .attr('id', (d) => { return 'mag'+d.id } ) // .classed('magnifier-label', true) // .append('text') // .style('font-size', text_height+'px') // .style('opacity', function(d) { // return L_documents.select('#'+d.id) // .selectAll('*') // .style('opacity') // }) // .classed('magnifier-left', true) // .attr('x', (d, i) => { return right_boundary + indent_x }) // .attr('y', (d, i) => { return top_boundary + indent_y + (i+1) * text_height }) // .text( (d) => { return d.label } ) // .on( 'mouseover', function () { // d3.select( this ).style('opacity', '0.5') // .style('fill', 'red'); // var v = d3.select (this).data()[0]; // console.log (v, 'to be fixxxxxxed'); // escalation_button.semantics.escalation( v.id, `https://fastapi.metacpan.org/v1/pod/${v.label}?content-type=text/html` ); // L_documents.select('#'+v.id) // .selectAll('*') // .style('opacity', '0.5') // .style('fill', 'red'); // }) // .on( 'mouseout', function () { // var v = d3.select (this).data()[0]; // d3.select( this ).style('fill', 'white'); // L_documents.select('#'+v.id) // .selectAll('*') // .style('fill', 'white'); // }) // ; // labels.exit() // .remove() // ; // } .mappo-overlay { // needed??? display: none; position: absolute; z-index : 20; flex-direction: row; justify-content: flex-start; align-items: center; flex-direction: column; flex-wrap: wrap; width : 186px; opacity : 1; } .enclosed { border : 1px solid grey; } .downward { border-bottom : 1px solid transparent; border-top-left-radius : 5px; border-top-right-radius : 5px; } .upward { border-top : 1px solid transparent; border-bottom-left-radius : 5px; border-bottom-right-radius : 5px; } .leftward { border-right : 1px solid transparent; border-top-left-radius : 5px; border-bottom-left-radius : 5px; } .rightward { border-left : 1px solid transparent; border-bottom-right-radius : 5px; border-top-right-radius : 5px; } .downrightward { border-right : 1px solid transparent; border-bottom : 1px solid transparent; border-top-left-radius : 5px; } .downleftward { border-left : 1px solid transparent; border-bottom : 1px solid transparent; border-top-right-radius : 5px; } .leftupward { border-left : 1px solid transparent; border-top : 1px solid transparent; border-bottom-right-radius : 5px; } .leftuprightward { border-left : 1px solid transparent; border-top : 1px solid transparent; border-right : 1px solid transparent; } .leftdownrightward { border-left : 1px solid transparent; border-bottom : 1px solid transparent; border-right : 1px solid transparent; } .noneward { border-top : 1px solid transparent; border-left : 1px solid transparent; border-bottom : 1px solid transparent; border-right : 1px solid transparent; } .middleward { border-top : 1px solid transparent; border-bottom : 1px solid transparent; } // n.selectAll('rect') // L_magnifier.select('#mag'+v.id) // .select('text') // .style('opacity', '0.5') // .style('fill', 'red'); // L_magnifier.select('#mag'+v.id) // .select('text') // .style('fill', 'white'); // t_docs // updating // .attr( "id", function(d,i) { return d.id }) // .attr("transform", function(d) { // return `translate(${d.x+d.deltax},${d.y+d.deltax})`; // }) // ; // t_docs // update // .select('a') // .attr ("xlink:href", function(d,i) { return "/documents/" + d.id; } ) // .attr ("xlink:show", function(d,i) { return "new_" + d.id; }) // ; // t_docs // update // .select( 'rect' ) // .attr ("width", function(d) { return d.width; }) // .attr ("height", function(d) { return d.height; }) // .attr( 'fill', function(d) { return d.color; }) // // .attr( 'fill', function(d) { return impactColor( d.impact ) } ) // ; // islands_button.t.classed('blink', true); // islands_button.t.selectAll('button') // .classed('blink', true) // ; // islands_button.t.classed('blink', false); // islands_button.t.selectAll('button') // .classed('blink', false) // ; // this.controller.next(); // super.activate(); // guide_quicksearch_button.activate(); // zoomer // .append('rect') // .attr('width', width) // .attr('height', height) // // .attr("filter", "url(#filter-global-dimming)") // .style("background-color", "gray") // .style("opacity", "0.5") // ; // // zoomer // // .append("foreignObject") // // .append("xhtml:i") // // .attr("title", "xxx") // // .style("font-size", "100px") // // .style("background-color", "white") // // .text("xxxxxxxxxxxxxxxxxxxxxxx") // // ; // var guardian = svg.append('rect') // .attr('id', 'guardian') // ; // svg.on('mousemove', function() { // console.log(d3.event.x, d3.event.y); // guardian.style('x', d3.event.x ) // .style('y', d3.event.y) // ; // }); // d3.selectAll('table.wippy').on('mouseover', function() { // console.log(d3.event.x, d3.event.y, d3.select(this).attr('id')); // d3.select(this).select('button').dispatch('mouseover'); // }); // var A = { x : L2 + 120, y : LENSE_WIDTH * 1/3 + 20 }; // relative to magnifier 0, 0 // var A = { x : L2 + 120, y : LENSE_WIDTH * 2/3 + 20 }; // relative to magnifier 0, 0 // var A = { x : L2 - 120, y : LENSE_WIDTH * 2/3 + 20 }; // relative to magnifier 0, 0 // var A = { x : L2 - 120, y : LENSE_WIDTH * 1/3 - 20 }; // relative to magnifier 0, 0 // draw_ref_line( this.magnifier, { x : L2 - 120, y : LENSE_WIDTH * 1/3 - 20 }, 40 ); // draw_ref_line( this.magnifier, { x : L2 - 120, y : LENSE_WIDTH * 2/3 + 20 }, 40 ); // function draw_ref_line( perimeter, A, text_height ) { // var L2 = LENSE_WIDTH/2; // var K = LENSE_WIDTH/5; // var B; // var C; // var anchor; // var T; // if (A.x == L2) { // exact middle // B = { x : LENSE_WIDTH - K, y : A.y } // C = { x : LENSE_WIDTH, y : B.y }; // somewhat arbitrary // T = { x : B.x + 10, y : B.y - 5 }; // anchor = 'start'; // } else if (A.x < L2) { // left side // B = { x : K, y : L2 + K * ( A.y - L2 ) / ( L2 - A.x ) }; // C = { x : 0, y : B.y }; // anchor = 'end'; // T = { x : B.x + 10, y : B.y - 5 }; // } else { // right side // B = { x : LENSE_WIDTH - K, y : L2 + (L2 - K) * ( L2 - A.y ) / ( L2 - A.x ) }; // C = { x : LENSE_WIDTH, y : B.y }; // anchor = 'start'; // T = { x : B.x + 10, y : B.y - 5 }; // } // var g = 1; //????? // var tester = g.append('circle') // .attr('cx', A.x) // .attr('cy', A.y) // .attr('r', 10) // .attr('fill', 'black') // ; // var tester4 = g.append('path') // .attr('d', `M${A.x} ${A.y} L${B.x} ${B.y} H${C.x}`) // .attr('stroke', 'black') // .attr('fill', 'transparent') // ; // var text_height = 40; // var text = g.append('text') // .style('font-size', text_height+'px') // .attr('text-anchor', anchor) // .attr('x', T.x) // .attr('y', T.y) // .text( "sdsdfsfsfs" ) // ; // } // if(0) { // using iframes // excited.enter() // .append('foreignObject') // .attr('height',IFRAME_HEIGHT) // .attr('width', IFRAME_WIDTH) // .style("background-color", "white") // .attr('transform', function(d) { // return transform2str( { translateX : (d.x - xf) * magnify + t0.translateX + 500, // translateY : (d.y - yf) * magnify + t0.translateY - 500, // scaleX : 1 } ); } ) // .append("xhtml:iframe") // .attr("sandbox", "allow-scripts") // .attr("height", "100%") // .attr("width", "100%") // .attr("src", d => `https://fastapi.metacpan.org/v1/pod/${d.label}?content-type=text/html`) // ; // excited // .attr('transform', function(d) { return transform2str( { translateX : (d.x - xf) * magnify + t0.translateX + 500, // translateY : (d.y - yf) * magnify + t0.translateY - 500, // scaleX : 1 } ); } ) // ; // excited.exit() // .remove() // ; // } // if(0) { // excited.enter() // .append('g') // .classed('excited', true) // .attr('transform', function(d) { return transform2str( { translateX : (d.x - xf) * magnify + t0.translateX, // translateY : (d.y - yf) * magnify + t0.translateY, // scaleX : magnify } ); } ) // .append('rect') // .attr('fill', 'black') // .attr('width',10) // .attr('height',10) // ; // excited // .attr('transform', function(d) { return transform2str( { translateX : (d.x - xf) * magnify + t0.translateX, // translateY : (d.y - yf) * magnify + t0.translateY, // scaleX : magnify } ); } ) // ; // excited.exit() // .remove() // ; // } // if (0) { // var newbies = search_qtree(document_qtree, xf, yf, xf+W, yf+W); // console.log("newbies", newbies); // let oldies = magnifier.mappo.focussed; // magnifier.mappo.focussed = newbies; // establish the new ones // { // let dropouts = oldies.filter(x => !newbies.includes(x)); // //console.log("------ (to be reset)", dropouts); // dropouts.map(function(d) { // reset those which dropped out to origin position // d3.select('#' + d.id) // .attr('transform', transform2str( { translateX : d.x, // translateY : d.y, // scaleX : 1 } ) ) // ; // }); // } // { // let magnify = 1 / focus; // newbies.map(function(d) { // move all inside focus // d3.select('#' + d.id) // .attr('transform', transform2str( { translateX : (d.x - xf) * magnify + t0.translateX, // translateY : (d.y - yf) * magnify + t0.translateY, // scaleX : magnify } ) ) // ; // }); // } // } // t0 = t0 ? t0 : str2transform( this.magnifier.attr('transform') ); // var W = +this.focal.attr('width'); // var xf = t0.translateX + +this.focal.attr('x'); // var yf = t0.translateY + +this.focal.attr('y'); // // console.log("inside?", xf, yf, W, W, t0); // L_documents.selectAll('g') // .each(function(d) { // if (is_a_inside_r( [d.x, d.y], [ xf, yf, xf + W, yf + W ])) { // d3.select(this).attr('transform', transform2str( { translateX : d.x, // translateY : d.y, // scaleX : 1 } ) ); // } // }) // ; // // L_magnifier.selectAll('g.magnifier-label').remove(); // var d0 = origin_search_button.semantics.documents[0]; //console.log('before', d0 ); //d0.fisheye = fisheye( d0 ); //return; // var t0 = str2transform( magnifier.attr('transform') ); // var W = +focal.attr('width'); // var xf = t0.translateX + +focal.attr('x'); // var yf = t0.translateY + +focal.attr('y'); // var focussed = origin_search_button.semantics.documents; // search_qtree(document_qtree, xf, yf, xf+W, yf+W); //console.log('focussed', focussed); // focussed.map(function(d) { d.fisheye = fisheye( d ); }); //console.log('focussed', focussed); // focussed.map( // d => console.log(d.id, d.x - d.fisheye.x, d.y - d.fisheye.y ) // ); // L_documents.selectAll('g') // .attr('transform', function(d) { // console.log(d); // var xxx = fisheye( d ); // console.log('=>', xxx); // return transform2str( { translateX : (xxx.x), // 1/magnifier_button.mappo.vertical.focus // translateY : (xxx.y), // scaleX : xxx.z } ); // }) // ; // .each(function(d) { // var t0 = d.attr('transform'); // console.log('doc pos', t0.translateX, t0.translateY); // return; // if (is_a_inside_r( [d.x, d.y], [ xf, yf, xf + W, yf + W ])) { // console.log("inside", d.id); // // var magnify = 1/magnifier_button.mappo.vertical.focus; // d3.select(this).attr('transform', transform2str( { translateX : (d.fisheye.x + t0.translateX), // 1/magnifier_button.mappo.vertical.focus // translateY : (d.fisheye.y + t0.translateY), // scaleX : 1 } ) ) // ; // } else { // d3.select(this).attr('transform', transform2str( { translateX : d.x, // translateY : d.y, // scaleX : 1 } ) ) // ; // } // }) // L_documents.selectAll('g') // .data(focussed) // .attr('x', d => d.fisheye.x) // .attr('y', d => d.fisheye.y) // ; // var magnifier_center_button // = magnifier_controller.append_button( { group_id : 'magnifier-center-table', // center : [ "magnifier-center-button", "Center Focus", "filter_center_focus", // function( self ) { // }, // function() {}, // ], // } ); // // d3.select ('#brush-button') // // .select('i') // // .classed('md-light', true) // at start it is inactive // d3.select ('#brush-button').on ('click', function () { // console.log("click brush"); // var button = d3.select(this).select('i'); // if (button.classed('md-light')) { // console.log("brush"); // var brush = d3.brush() // .extent( [ [vp0.x, vp0.y], [vp0.dx,vp0.dy] ] ) // .on("end", function() { // var extent = d3.event.selection; // console.log("brushing", extent ); // // L_brush.append("rect") // // .attr("x", extent[0][0]) // // .attr("y", extent[0][1]) // // .attr("width", extent[1][0]-extent[0][0]) // // .attr("height", extent[1][1]-extent[0][1]) // // .classed('region-extent', true) // // ; // var kx = vpx.dx / ( extent[1][0]-extent[0][0] ); // contraction in X axis // var ky = vpx.dy / ( extent[1][1]-extent[0][1] ); // along Y // //console.log (kx, ky); // var k = kx < ky ? kx : ky; // take the smaller // //console.log (k); // var t = d3.zoomIdentity.translate((vp0.x - extent[0][0]) / zoom * k, (vp0.y - extent[0][1]) / zoom * k) // .scale(k); // //console.log("t ", t); // L_brush.on(".brush", null); // deactive BEFORE the zoom // // L_brush.call(brush.move, null); // zoomer.transition() // .duration(3000) // .call(zoomx.transform, t) // .on("end", function() { // // console.log("ended", brush); // // brush .extent( [ [vp0.x, vp0.y], [vp0.dx,vp0.dy] ] ); // L_brush.selectAll("rect").remove(); // remove all artefacts // button.classed("md-light", true); // // d3.select(this) // // .style("background-color", null) // // .style("opacity", null); // }) // }); // console.log("xxx"); // L_brush.call( brush ); // button.classed("md-light", false); // // d3.select(this) // // .style("background-color", "#FFBD39") // // .style("opacity", "1.0"); // } else { // // L_brush.call(brush.move, null); // L_brush.selectAll("rect").remove(); // button.classed("md-light", true); // // d3.select(this) // // .style("background-color", null) // // .style("opacity", null); // } //}); // origin_button.mappo.nodraw = function() { // // console.log('mappo nodraw'); // L_documents.style( 'display', 'none' ); // }; // origin_button.mappo.undraw = function() { // // console.log('mappo undraw'); // switch( position_control.mappo.is_button() ) { // case 'dashboard': // circle_elastic_nodraw(); // // rect_dither_redraw( L_documents, [] ); // break; // case 'grain': // circle_elastic_nodraw(); // break; // default: // console.log('undraw mode fucked up', position_control.mappo.is_button() ); // } // L_documents.style( 'display', 'none' ); // }; // origin_button.mappo.redraw = function() { // return; // L_documents.style( 'display', 'block' ); // // console.log( "redraw", position_control.mappo.is_button() ); // var documents = origin_button.mappo.vertical.documents; // if (documents === undefined) { return; } // that's ok at start // // switch( position_control.mappo.is_button() ) { // switch( 'dashboard' ) { // case 'dashboard': // function doc_dim_rect (lambda, min, max, impact, orientation) { // var w = (lambda) * min + lambda * impact * max; // var h = w * SQRT2; // if (orientation == 'horizontal') { // return [ h, w ]; // } else { // return [ w, h ]; // } // } // var orientation = 'horizontal'; // var DOCS = documents.map (function(d) { // var w, h; // [ w, h ] = doc_dim_rect (origin_button.mappo.horizontal.lambda, 10, 40, d.impact, orientation); // return { "x" : (d.x + (Math.random() - 0.5) * position_control.mappo.vertical.dither / 5) * DX, // "y" : (GRID[1] - d.y + (Math.random() - 0.5) * position_control.mappo.vertical.dither / 5) * DY, // "label" : d.label, // "id" : d.id.replace(/:/g, '-xcolonx-').replace(/\//g, '-xslashx-'), // "impact" : d.impact, // 'r' : (origin_button.mappo.horizontal.lambda) * searchResultScale( d.impact ), // 'deltax' : - w / 2, // 'deltay' : - h / 2, // 'width' : w, // 'height' : h, // } // }); // // console.log("DOCS", DOCS.map( (d) => { return d.id } )); // rect_dither_redraw ( DOCS, // function(impact) { return resultColorScale( impact ); }, // ); // elastic_simulation( DOCS, position_control.mappo.horizontal.radius ); // break; // case 'grain': // // console.log("documents", documents.map( (d) => { return d.id } )); // var DOCS = documents.map (function(d) { // return { "x" : (d.x + (Math.random() - 0.5) * position_control.mappo.vertical.dither / 5) * DX, // "y" : (GRID[1] - d.y + (Math.random() - 0.5) * position_control.mappo.vertical.dither / 5) * DY, // "id" : d.id.replace(/:/g, '-xcolonx-').replace(/\//g, '-xslashx-'), // "label" : d.label, // "impact" : d.impact, // 'r' : (origin_button.mappo.horizontal.lambda) * searchResultScale( d.impact ) // } // }); // // console.log("DOCS", DOCS.map( (d) => { return d.id } )); // circle_elastic_redraw( DOCS, // function(impact) { return resultColorScale( impact ); }, // ); // elastic_simulation( DOCS, position_control.mappo.horizontal.radius ); // break; // default: // console.log('redraw mode fucked up', position_control.mappo.is_button() ); // } //}; // var position_control = Button( old_controller, { group_id : 'collision-control', // filler : 'collision-button-clip', // center : [ "collision-toggle-button", "Collision", "pending", // function() {}, // to be defined never // function() {}, // ditto // ], // // configuration : function() { // // documents_selector.mappo.build(); // // documents_selector.mappo.open(); // // }, // position_control.mappo.becomes = function( what ) { // origin_button.mappo.undraw(); // switch( what ) { // case 'dashboard' : // position_control.mappo.change_button( what ); // break; // case 'grain' : // position_control.mappo.change_button( what ); // break; // case 'blur_circular' : // console.log( "missing" ); // position_control.mappo.change_button( what ); // position_control.mappo.horizontal = elastic_horizontal; // origin_button.mappo.redraw(); // break; // default: // console.log('mode fucked up', what); // } // if (origin_button.mappo.is_activated()) { // origin_button.mappo.redraw(); // } // otherwise not //}; //position_control.mappo.becomes( 'grain' ); // origin_button.mappo.becomes = function (what) { // var activated = origin_button.mappo.is_activated(); // save state // if (activated) { origin_button.mappo.deactivate ( origin_button ); } // switch( what ) { // case 'description' : // search_box.mappo.close(); // origin_button.mappo.change_button( what ); // // origin_button.mappo.is_button = function() { return 'description'; }; // origin_button.mappo.vertical = documents_vertical; // { // var fill = DOCUMENT_SET[1][ Math.floor (origin_button.mappo.vertical.percentage / DOCUMENT_SET[0] ) ]; // origin_button.mappo.level( fill ); // } // origin_button.mappo.activate = function(table, center) { // click => activate button // if (! table.mappo.horizontal.more2go(table.mappo.horizontal)) { table.mappo.disable_wippy('document-scale-more-button'); } // if (! table.mappo.horizontal.less2go(table.mappo.horizontal)) { table.mappo.disable_wippy('document-scale-less-button'); } // if (! table.mappo.vertical .more2go(table.mappo.horizontal)) { table.mappo.disable_wippy('document-more-button'); } // if (! table.mappo.vertical .less2go(table.mappo.horizontal)) { table.mappo.disable_wippy('document-less-button'); } // var needed = Math.floor (NR_DOCUMENTS / 100 * table.mappo.vertical.percentage); // how many do I need // //console.log("DOCS "+DOCUMENTS.length, "NEED "+needed); // if (DOCUMENTS.length < needed) { // not all needed were loaded // promise_doc_fetch_and_render (0, needed); // then initate loading, and eventually rendering // } else { // we have all we need // origin_button.mappo.redraw (); // } // // position_control.mappo.enable_button(); // // position_control .mappo.enable_wippy(); // // escalation_button.mappo.enable_wippy(); // }; // origin_button.mappo.deactivate = function (table, center) { // // unrender_paging (); // table.mappo.nodraw (); // // position_control .mappo.disable_wippy(); // // escalation_button.mappo.disable_wippy(); // }; // // origin_button.mappo.documents = function() { return this.documents; } // break; // case 'search' : // origin_button.mappo.change_button( what ); // // origin_button.mappo.is_button = function() { return 'search'; }; // origin_button.mappo.vertical = search_vertical; // { // var fill = DOCUMENT_SET[1][ Math.floor (origin_button.mappo.vertical.results / 10 ) ]; // origin_button.mappo.level( fill ); // } // origin_button.mappo.activate = function(table, center) { // // L_documents.style( 'display', 'block' ); // search_box.mappo.open(); // origin_button.mappo.redraw (); // // position_control .mappo.enable_wippy(); // // escalation_button.mappo.enable_wippy(); // }; // origin_button.mappo.deactivate = function(table, center) { // origin_button.mappo.nodraw (); // // L_documents.style( 'display', 'none' ); // search_box.mappo.close(); // // position_control .mappo.disable_wippy(); // // escalation_button.mappo.disable_wippy(); // }; // // origin_button.mappo.documents = function() { return this.results; } // break; // default: // console.log('mode fucked up', what); // } // if (activated) { origin_button.mappo.activate( origin_button ); } // }; // search_box // .classed( 'enclosed', true) // .classed( 'rightward', true ) // .classed( 'mappo-overlayish', true ); // origin_button // .classed( 'enclosed', true ) // .classed( 'leftward', true ) // .classed( 'mappo-overlayish', true ); // origin_button // .classed( 'enclosed', false ) // .classed( 'leftward', false ) // .classed( 'mappo-overlayish', false ); #xxx-documents-controller { top : 16px; left : 9px; height : 190px; } // filter : drop-shadow(0px 4px 12px rgba(0, 0, 0, 0.2)); // box-shadow: rgba(50, 50, 93, 0.25) 0px 6px 12px -2px, rgba(0, 0, 0, 0.3) 0px 3px 7px -3px; // box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.15); // rgba(100,100,100,0.1); //------------------------------------------ // var documents_selector = d3.select("#mybodyx") // .append( "div" ) // .attr( 'id', 'documents-controller' ) // .classed("mappo-overlay", true) // .classed('mappo-overlayish', true) // ; // documents_selector.mappo = { // 'open' : function () { // documents_selector // .transition() // .style('opacity', 1) // .duration(500) // .on("start", function() { // documents_selector.style("display", "flex"); // make it appear // }) // ; // }, // 'close' : function () { // documents_selector // .transition() // .style('opacity', 0) // .duration(500) // .on("end", function() { // documents_selector.style("display", "none"); // make it disappear // } ) // ; // }, // 'status' : { // a : 1, // b : 1, // c : 1 // }, // 'build' : function () { // var sss = build_selector_data(); // var ttt = documents_selector.selectAll('div') // .data( sss ); // // console.log("sss", sss.length, "ttt", ttt.nodes().length); // ttt // update // .attr("class", function(d) { return "enclosed " + (d.enclosed ? d.enclosed + " select-button--colored": "noneward"); }) // .select( "button" ) // .classed("mdl-color--whatever", function(d, i) { return i % 5 == 2 ? true : false; }) // .style("opacity", function( d ) { return d.id == '' ? "0" : "1" } ) // .attr("id", function(d) { return d.id } ) // .attr("title", function(d) { return d.title }) // .select("i") // .text(function(d) { return d.symbol }) // ; // ttt.enter() // .append( "div" ) // .attr("class", function(d) { return "enclosed " + (d.enclosed ? d.enclosed + " select-button--colored": "noneward"); }) // .append( "button") // .classed("mdl-button mdl-button--fab ui-playButton", true) // .classed("mdl-button--colored", true) // .classed("mdl-color--whatever", function(d, i) { return i % 5 == 2 ? true : false; }) // .attr("data-upgraded", ",MaterialButton") // .style("margin", "4px 4px 4px 4px") // .style("opacity", function( d ) { return d.id == '' ? "0" : "1" } ) // .attr("id", function(d) { return d.id } ) // .attr("title", function(d) { return d.title }) // .on("click", function(d, i) { // // console.log("selector click", i, sss[i].symbol, d ); // //console.log( this.node() ); // if (i < 5) { // documents_selector.mappo.status.a = d.target; // position_control.mappo.becomes(d.symbol); // } else if (i < 10) { // documents_selector.mappo.status.b = d.target; // escalation_control.mappo.becomes(d.symbol); // } else if (i < 15) { // documents_selector.mappo.status.c = d.target; // origin_button.mappo.becomes(d.symbol); // } // documents_selector.mappo.build(); // show_selector( build_selector_data() ); // TODO: KEEP? // documents_selector.mappo.close(); // }) // .append("i") // .classed("material-icons md-inactive", true) // .text(function(d) { return d.symbol }) // ; // ttt.exit().remove(); // }, // }; // function build_selector_data() { // var A = [ // { id: 'rectangle-set', // title : 'rectangular shape', // symbol : 'dashboard', // target : 0, // enclosed : 'downward' // }, // { id: 'bubble-set', // title : 'bubble shape', // symbol : 'grain', // 'bubble_chart', // target : 1, // enclosed : 'upward' // }, // // { id: 'fisheye-set', // // title : 'fisheye mode', // // symbol : 'blur_circular', // // target : 2, // // enclosed : 'upward' // // }, // ]; // var B = [ // { id: 'inline-set', // title : 'display inline mode', // symbol : 'ballot', // target : 0, // enclosed : 'downward' // }, // { id: 'mix-set', // title : 'mixed mode', // symbol : 'balance', // target : 1, // enclosed : 'middleward' // }, // { id: 'detach-set', // title : 'display detached mode', // symbol : 'chat', // target : 2, // enclosed : 'upward' // }, // ]; // var C = [ // { id: 'documents-set', // title : 'document listing mode', // symbol : 'description', // target : 0, // enclosed : 'downward' // }, // { id: 'search-set', // title : 'search mode', // symbol : 'search', // target : 1, // enclosed : 'upward' // }, // ]; // var aaa = []; // for (i = 0; i<15; i++) { // aaa.push( { id: '', // title : 'Y', // symbol : 'hub' // }, // ); // } // aaa.splice( 0 + 2 - documents_selector.mappo.status.a, A.length, ...A); // aaa.splice( 5 + 2 - documents_selector.mappo.status.b, B.length, ...B); // aaa.splice(10 + 2 - documents_selector.mappo.status.c, C.length, ...C); // return aaa; // } //-- new button infrastructure ------------------------------------------ function Button( xcontroller, button ) { var table = xcontroller.append( "table" ) .attr('id', button.group_id) .classed("wippy", true); var up = table.append("tr") .append("td") .attr("colspan", 3) .append("button") .attr("id", ( button.vertical === undefined ? "" : button.vertical.up.id )) .attr("title", ( button.vertical === undefined ? "" : button.vertical.up.title )) .classed("tiny", true) .classed("mdl-button", true) ; up.append("i") .classed("material-icons " + ( button.vertical === undefined ? "invisible" : "md-inactive md-light" ), true) .text("keyboard_arrow_up") ; var tr = table.append("tr"); var left = tr.append("td") .append("button") .attr("id", ( button.horizontal === undefined ? "" : button.horizontal.left.id )) .attr("title", ( button.horizontal === undefined ? "" : button.horizontal.left.title )) .classed("tiny", true) .classed("mdl-button", true); left .append("i") .classed("material-icons " + ( button.horizontal === undefined ? "invisible" : "md-inactive md-light" ), true) .text("keyboard_arrow_left") ; var center = tr.append("td") .append("button") .attr("id", button.center[0]) .attr("title", button.center[1]) .classed("mdl-button mdl-button--fab ui-playButton", true) .classed("mdl-button--colored", false) // signal that button is disabled // .classed("mdl-button mdl-button--fab mdl-button--colored ui-playButton", true) .attr("data-upgraded", ",MaterialButton"); center .append("i") .classed("material-icons md-inactive md-light", true) .text(button.center[2]) ; var right = tr.append("td") .append("button") .attr("id", ( button.horizontal === undefined ? "" : button.horizontal.right.id )) .attr("title", ( button.horizontal === undefined ? "" : button.horizontal.right.title )) .classed("tiny", true) .classed("mdl-button", true); right.append("i") .classed("material-icons " + ( button.horizontal === undefined ? "invisible" : "md-inactive md-light" ), true) .text("keyboard_arrow_right") ; var down = table.append("tr") .append("td") .attr("colspan", 3) .append("button") .attr("id", ( button.vertical === undefined ? "" : button.vertical.down.id )) .attr("title", ( button.vertical === undefined ? "" : button.vertical.down.title )) .classed("tiny", true) .classed("mdl-button", true) ; down.append("i") .classed("material-icons " + ( button.vertical === undefined ? "invisible" : "md-inactive md-light" ), true) .text("keyboard_arrow_down") ; table.mappo = { 'is_button' : function() { return center.select("i").text(); }, 'change_button' : function(text) { center.select("i").text(text); }, 'disable_button' : function(id) { center.classed("mdl-button--colored", false); }, 'enable_button' : function(id) { center.classed("mdl-button--colored", true); }, 'disable_wippy' : function(id) { if (id === undefined) { // all table.selectAll('i').classed("md-light", true); } else { table.select('#'+id).select('i').classed("md-light", true); } }, 'enable_wippy' : function(id) { if (id === undefined) { // all table.selectAll('i').classed("md-light", false); } else { table.select('#'+id).select('i').classed("md-light", false); } }, 'activate' : function() { // console.log( "activate", button.group_id ); button.center[3] (table, center); // application semantics // console.log("activate", button.group_id, table.mappo.vertical, table.mappo.horizontal ); if (table.mappo.vertical && table.mappo.vertical.assert) { table.mappo.vertical.assert( table.mappo.vertical ); } if (table.mappo.horizontal && table.mappo.horizontal.assert) { table.mappo.horizontal.assert( table.mappo.horizontal ); } center.select('i').classed("md-light", false); // switch on button }, 'deactivate' : function() { button.center[4] (table, center); // application semantics center.select('i').classed("md-light", true); // switch on button }, 'is_activated' : function() { return ! (center.select('i').classed("md-light")); }, 'blur' : function() { table.style("filter", "url(#button-blur)"); }, 'unblur' : function() { table.style("filter", ""); }, 'level' : function(level) { //console.log("level", level, button.filler); d3.select('#'+button.filler).select('rect') .attr("y", level); }, }; if (button.filler) { var svg = d3.select('#'+button.center[0]) .append('svg'); svg.append("clipPath") .attr("id", button.filler) .append("rect") .attr("x",0) .attr("y", 28) .attr("height", 28) .attr("width", 28) ; svg.append("circle") .attr("clip-path","url(#"+button.filler+")") .attr("cx", 14) .attr("cy", 14) .attr("r", 14) .attr("fill","SteelBlue") ; } if (button.configuration) { center.on( 'dblclick', function () { button.configuration(); }); } center.on ('click', function () { if (center.classed('mdl-button--colored')) { // it is enabled if (center.select('i').classed("md-light")) { // enabled, off => turn on if (table.mappo.activate) { table.mappo.activate(table, center); } center.select('i').classed("md-light", false); // switch on button table.selectAll("i.material-icons").classed("md-light", false); // activate all arrows } else { if (table.mappo.deactivate) { table.mappo.deactivate(table, center); } center.select('i').classed("md-light", true); // switch off button table.selectAll("i.material-icons").classed("md-light", true); // deactivate all arrows } } else { } }); if (button.horizontal) { table.mappo.horizontal = button.horizontal; left.on( 'click', function () { table.mappo.enable_wippy(button.horizontal.right.id); var h = table.mappo.horizontal; if (h.less2go(h)) { // for safety, should not be necessary h.less(h); } if (! h.less2go(h)) { table.mappo.disable_wippy(button.horizontal.left.id); } }); right.on( 'click', function () { table.mappo.enable_wippy(button.horizontal.left.id); var h = table.mappo.horizontal; if (h.more2go(h)) { h.more(h); } if (! h.more2go(h)) { table.mappo.disable_wippy(button.horizontal.right.id); } }); } if (button.vertical) { table.mappo.vertical = button.vertical; up.on( 'click', function () { //console.log("click up", "down", button.vertical.down.id, "up", button.vertical.up.id); table.mappo.enable_wippy(button.vertical.down.id); var h = table.mappo.vertical; if (h.more2go(h)) { h.more(h); } if (! h.more2go(h)) { table.mappo.disable_wippy(button.vertical.up.id); } }); down.on( 'click', function () { table.mappo.enable_wippy(button.vertical.up.id); var h = table.mappo.vertical; if (h.less2go(h)) { h.less(h); } if (! h.less2go(h)) { table.mappo.disable_wippy(button.vertical.down.id); } }); } return table; } var old_controller = Controller( { id: 'old-main-controller' }); // old function add_control_button (controller, button) { // FIX: to be removed! return; var table = controller.append( "table" ) .attr('id', button.group_id) .classed("wippy", true) table.append("tr") .append("td") .attr("colspan", 3) .append("button") .attr("id", ( button.up === undefined ? "" : button.up[0] )) .attr("title", ( button.up === undefined ? "" : button.up[1] )) .classed("tiny", true) .classed("mdl-button", true) .append("i") .classed("material-icons " + ( button.up === undefined ? "invisible" : "md-inactive md-light" ), true) .text("keyboard_arrow_up") ; var tr = table.append("tr"); tr.append("td") .append("button") .attr("id", ( button.left === undefined ? "" : button.left[0] )) .attr("title", ( button.left === undefined ? "" : button.left[1] )) .classed("tiny", true) .classed("mdl-button", true) .append("i") .classed("material-icons " + ( button.left === undefined ? "invisible" : "md-inactive md-light" ), true) .text("keyboard_arrow_left") ; tr.append("td") .append("button") .attr("id", button.center[0]) .attr("title", button.center[1]) .classed("mdl-button mdl-button--fab ui-playButton", true) // .classed("mdl-button mdl-button--fab mdl-button--colored ui-playButton", true) .attr("data-upgraded", ",MaterialButton") .append("i") .classed("material-icons md-inactive md-light", true) .text(button.center[2]) ; tr.append("td") .append("button") .attr("id", ( button.right === undefined ? "" : button.right[0] )) .attr("title", ( button.right === undefined ? "" : button.right[1] )) .classed("tiny", true) .classed("mdl-button", true) .append("i") .classed("material-icons " + ( button.right === undefined ? "invisible" : "md-inactive md-light" ), true) .text("keyboard_arrow_right") ; table.append("tr") .append("td") .attr("colspan", 3) .append("button") .attr("id", ( button.down === undefined ? "" : button.down[0] )) .attr("title", ( button.down === undefined ? "" : button.down[1] )) .classed("tiny", true) .classed("mdl-button", true) .append("i") .classed("material-icons " + ( button.down === undefined ? "invisible" : "md-inactive md-light" ), true) .text("keyboard_arrow_down") ; } function add_fill_level(parent, id, fill) { // console.log("add fill level "+id); var svg = d3.select('#'+parent) .append('svg'); svg.append("clipPath") .attr("id", id) .append("rect") .attr("x",0) .attr("y", fill) .attr("height", 28) .attr("width", 28) ; svg.append("circle") .attr("clip-path","url(#"+id+")") .attr("cx", 14) .attr("cy", 14) .attr("r", 14) .attr("fill","SteelBlue") ; } // enterings.append("tr") // .append("td") // .append("button") // .attr("class", "tiny mdl-button") // .attr("data-upgraded", ",MaterialButton") // .on("click", function(d,i) { // //console.log("removing "+ i, d); // bookmarks.splice(i, 1); // display_bookmarks( bookmarks ); // save_bookmarks (); // //console.log( bookmarks ); // }) // .append("i") // .attr("class", "material-icons md-inactive") // .text("remove") // ; //var bookmarks_box = d3.select("#mybody") // .append( 'div' ) // .attr( 'id', 'bookmarks-box' ) // .classed("controller", true) // .classed('mappo-overlayish', true) // .on ('mouseover', function () { // d3.select(this).selectAll('table.wippy') // .transition() // .style('opacity', 1) // .duration(300) // ; // }) // .on ('mouseout', function () { // d3.select(this).selectAll('table.wippy') // .transition() // .style('opacity', 0.0) // .duration(300) // ; // }) //; // bookmarks_box.xhint = function() { // this.style('display', 'flex'); // display_bookmarks( bookmarks ); // }; // bookmarks_box.xdehint = function() { // // this.style('display', null); // }; // bookmarks_box.append("table") // .attr("class", "wippy") // .append("tr") // .append("td") // .append("button") // .attr("class", "mdl-button mdl-button--fab mdl-button--colored ui-playButton") // .attr("data-upgraded", ",MaterialButton") // .attr("title", "add bookmark") // .on("click", function (d,i) { // var nb = { created : Date.now(), // t : transform2k( str2transform( d3.select("#scaler").attr("transform") ) ) // }; // bookmarks.push( nb ); // display_bookmarks( bookmarks ); // save_bookmarks ( bookmarks ); // // console.log( bookmarks ); // }) // .append("i") // .attr("class", "material-icons md-inactive") // .text("bookmark_add") // ; // add_control_button (controller, { // center : [ "grid-button", "Grid", "grid_4x4" ], // left : [ "grid-left-button", "Finer Grid" ], // right : [ "grid-right-button", "Coarse Grid" ] }); //d3.select('#grid-button').classed("mdl-button--colored", true); // signal that button is active //d3.select('#grid-control').selectAll('i').classed('md-light', false); //d3.select ('#grid-button') // .select('i') // .classed('md-light', true) // at start it is inactive // d3.select ('#grid-button').on ('click', function () { // var button = d3.select(this).select('i'); // if (button.classed('md-light')) { // button.classed("md-light", false); // display_grid(grid_detail * 10) // } else { // L_grid.selectAll("g").remove(); // remove all artefacts // button.classed("md-light", true); // } // }); // d3.select ('#grid-left-button').on ('click', function () { // if (d3.select ('#grid-button').select('i').classed('md-light')) { // button disabled // } else if (d3.select ('#grid-left-button').select('i').classed('md-light')) { // left disabled // } else { // d3.select('#grid-right-button').select('i').classed("md-light", false); // grid_detail--; // if (grid_detail <= 0) { // d3.select('#grid-left-button').select('i').classed("md-light", true); // } // display_grid(grid_detail * 10) // } // }); // d3.select ('#grid-right-button').on ('click', function () { // if (d3.select ('#grid-button').select('i').classed('md-light')) { // button disabled // } else if (d3.select ('#grid-right-button').select('i').classed('md-light')) { // right disabled // } else { // d3.select('#grid-left-button').select('i').classed("md-light", false); // grid_detail++; // if (grid_detail >= 2) { // d3.select('#grid-right-button').select('i').classed("md-light", true); // } // display_grid(grid_detail * 10) // } // }); // add_control_button (controller, { group_id : 'navigation-control', // center : [ "home-button", "Home", "home" ], // left : [ "left-button", "Navigate Left" ], // right : [ "right-button", "Navigate Right" ], // up : [ "up-button", "Navigate Up" ], // down : [ "down-button", "Navigate Down" ] }); // d3.select('#home-button').classed("mdl-button--colored", true); // signal that button is active // d3.select('#navigation-control').selectAll('i').classed('md-light', false); // d3.select ('#home-button').on ('click', function () { // var t = d3.zoomIdentity.translate(0, 0).scale(1); // zoomer.transition() // .on('start', function () { // d3.select("#home-control").selectAll("i.material-icons").classed("md-light", true); // deactivate all buttons // }) // .duration(3000) // .call(zoomx.transform, t) // .on('end', function () { // d3.select("#home-control").selectAll("i.material-icons").classed("md-light", false); // activate all buttons // }) // ; // }); // d3.select ('#left-button').on ('click', function () { // zoomx.translateBy(zoomer, 10, 0); // }); // d3.select ('#right-button').on ('click', function () { // zoomx.translateBy(zoomer, -10, 0); // }); // d3.select ('#up-button').on ('click', function () { // zoomx.translateBy(zoomer, 0, 10); // }); // d3.select ('#down-button').on ('click', function () { // zoomx.translateBy(zoomer, 0, -10); // }); // var xsvg = d3.select("#dimmer"), // width = +400 // height = +300; // var color = d3.scaleOrdinal(d3.schemeCategory20); // var simulation = d3.forceSimulation() // .force('collide', d3.forceCollide().radius(function(d) { console.log(d); return d.r; })) // ; // d3.json("https://gist.githubusercontent.com/heybignick/3faf257bbbbc7743bb72310d03b86ee8/raw/fc3a789c7cf7f0c5766e5f0c6922c8d91df5c1d2/miserables.json") // .then(function(graph) { // graph.nodes.forEach((d, i) => { d.r = Math.random() * 50; }); // console.log( graph ); // var node = xsvg.append("g") // .selectAll("g") // .data(graph.nodes) // .enter().append("g") // ; // var circles = node.append("circle") // .attr("r", function(d) { return d.r; }) // .attr("stroke", function(d) { return 'blue'; }) // // .attr("fill", function(d) { return 'transparent'; }) // ; // simulation // .nodes(graph.nodes) // // .iterations(100) // .on("tick", ticked); // function ticked() { // console.log('tick'); // node // .attr("transform", function(d) { // // return "translate(" + d.x + "," + d.y + ")"; // return `translate(${d.x},${d.y})`; // }) // } // }); // function circle_elastic_rescale (lambda) { // var rs = L_documents.selectAll("circle"); // rs.each (function (d, i) { // // console.log(i, lambda, d.impact, lambda * searchResultScale( d.impact )); // d3.select(this).transition() // .attr( 'r', function(d) { return (4 - lambda * 4) * searchResultScale( d.impact ); }) // .duration(500); // }); // } // var simulation = d3.forceSimulation(documents) // create a simulation // .alpha( 1 ) // .velocityDecay( 0.7 ) // .alphaDecay( 0.4 ) // .force('collision', d3.forceCollide().radius(function(d) { return d.radius })) // .on('tick', function() { // // console.log("tick"); // var t_results = layer // .selectAll("circle") // .attr( 'cx', function(d) { return d.x; }) // .attr( 'cy', function(d) { return d.y; }) // ; // }) // // .stop() // ; // function rect_dither_rescale (lambda, orientation) { // var rs = L_documents.selectAll("rect"); // rs.each (function (d, i) { // var w, h; // [ w, h ] = doc_dim_rect (lambda, 10, 40, d.impact, orientation); // d3.select(this).transition() // .attr ("x", - w / 2) // .attr ("y", - h / 2) // .attr ("width", w) // .attr ("height", h) // .duration(500); // }); // } // origin_control.mappo.rescale = function(orientation) { // TODO? move this into collision // switch( position_control.mappo.is_button() ) { // case 'dashboard': // rect_dither_rescale (this.mappo.horizontal.lambda, orientation); // break; // case 'grain': // // circle_elastic_rescale (this.mappo.horizontal.lambda); // origin_control.mappo.redraw(); // unfortunately // break; // default: // console.log('mode fucked up', position_control.mappo.is_button() ); // } // }; // up : function( table, center ) { // table.mappo.vertical.results += 10; // var s; // if (s = d3.select ('#search-text').node().value) { // launch_search( s, table.mappo.vertical.results ); // } // if (table.mappo.vertical.results >= 100) { // d3.select(this).select('i').classed("md-light", true); // } // table.mappo.level( FILL_LEVELS10[ Math.floor( table.mappo.vertical.results / 10 ) ] ); // }, // down : function(table, center) { // table.mappo.vertical.results -= 10; // var s; // if (s = d3.select ('#search-text').node().value) { // xxxxlaunch_search( s, search_control.mappo.vertical.results ); // } // if (table.mappo.vertical.results <= 0) { // d3.select(this).select('i').classed("md-light", true); // } // table.mappo.level( FILL_LEVELS10[ Math.floor( table.mappo.vertical.results / 10 ) ] ); // }, // var search_control = Button( controller, { group_id : 'search-control', // filler : 'search-button-clip', // center : [ "search-pin-button", "Search", "search", // function(table, center) { // documents_box.mappo.close(); // documents_control.mappo.deactivate(); // L_results.style( 'display', 'block' ); // search_box.mappo.open(); // }, // function(table, center) { // L_results.style( 'display', 'none' ); // search_box.mappo.close(); // } // ], // vertical : { // results : 30, // number of fulltext matches to start with // // RESULTS : [] // }, // up : [ "more-search-button", "More Search Results", // function(table, center) { // search_control.mappo.vertical.results += 10; // var s; // if (s = d3.select ('#search-text').node().value) { // launch_search( s, search_control.mappo.vertical.results ); // } // if (search_control.mappo.vertical.results >= 100) { // d3.select(this).select('i').classed("md-light", true); // } // search_control.mappo.level( FILL_LEVELS10[ Math.floor( search_control.mappo.vertical.results / 10 ) ] ); // } // ], // down : [ "less-search-button", "Less Search Results", // function(table, center) { // search_control.mappo.vertical.results -= 10; // var s; // if (s = d3.select ('#search-text').node().value) { // launch_search( s, search_control.mappo.vertical.results ); // } // if (search_control.mappo.vertical.results <= 0) { // d3.select(this).select('i').classed("md-light", true); // } // search_control.mappo.level( FILL_LEVELS10[ Math.floor( search_control.mappo.vertical.results / 10 ) ] ); // } // ], // // left, right ? // }); // search_control.mappo.enable_button(); // signal that button is active //search_control.mappo.fill_level( FILL_LEVELS10[ Math.floor( search_control.mappo.vertical.results / 10 ) ] ); // d3.select ('#more-search-buttonxxx').on ('click', function () { // if (d3.select ('#more-search-button').select('i').classed('md-light')) { // search disabled // } else if (d3.select ('#more-search-button').select('i').classed('md-light')) { // islands up disabled // } else { // d3.select('#less-search-button').select('i').classed("md-light", false); // search_control.mappo.vertical.results += 10; // var s; // if (s = d3.select ('#search-text').node().value) { // launch_search( s, search_control.mappo.vertical.results ); // } // if (search_control.mappo.vertical.results >= 100) { // d3.select(this).select('i').classed("md-light", true); // } // search_control.mappo.level( FILL_LEVELS10[ Math.floor( search_control.mappo.vertical.results / 10 ) ] ); // // d3.select('#search-button-clip').select('rect') // // .attr("y", FILL_LEVELS10[ Math.floor( search_results / 10 ) ]); // } // }); // d3.select ('#less-search-buttonxxx').on ('click', function () { // if (d3.select ('#less-search-button').select('i').classed('md-light')) { // search disabled // } else if (d3.select ('#less-search-button').select('i').classed('md-light')) { // islands up disabled // } else { // d3.select('#more-search-button').select('i').classed("md-light", false); // search_control.mappo.vertical.results -= 10; // var s; // if (s = d3.select ('#search-text').node().value) { // launch_search( s, search_control.mappo.vertical.results ); // } // if (search_control.mappo.vertical.results <= 0) { // d3.select(this).select('i').classed("md-light", true); // } // search_control.mappo.level( FILL_LEVELS10[ Math.floor( search_control.mappo.vertical.results / 10 ) ] ); // // d3.select('#search-button-clip').select('rect') // // .attr("y", FILL_LEVELS10[ Math.floor( search_results / 10 ) ]); // } // }); // search_control // cross control // .on ('mouseover', function () { // search_box // .transition() // .style('opacity', 1) // .duration(300) // ; // }) // .on ('mouseout', function () { // search_box // .transition() // .style('opacity', 0.1) // .duration(300) // ; // }) // ; // search_box // cross control // .on ('mouseover', function () { // d3.select(this) // .transition() // .style('opacity', 1) // .duration(300) // ; // controller.selectAll('table.wippy') // .transition() // .style('opacity', 1) // .duration(300) // ; // }) // .on ('mouseout', function () { // d3.select(this) // .transition() // .style('opacity', 0.1) // .duration(300) // ; // controller.selectAll('table.wippy') // .transition() // .style('opacity', 0.1) // .duration(300) // ; // }) // ; // function clear_search_results () { // L_results // .selectAll("circle") // .remove(); // } //documents_selector.selectAll('table.wippy') // .style('opacity', 1) // ; // var inline_control = Button( documents_box, { group_id : 'inline-control', // filler : 'inline-button-clip', // center : [ "inline-toggle-button", "Inline On", "fitbit", // function() { // }, // null // ], // left : [], // right : [], // }); // var mixer_control = Button( documents_box, { group_id : 'mixer-control', // filler : 'mixer-button-clip', // center : [ "mixer-toggle-button", "Mixer Inline/Detach", "fitbit", // function() { // }, // null // ], // left : [], // right : [], // }); // var detach_control = Button( documents_box, { group_id : 'capture-table', // filler : 'detach-button-clip', // center : [ "detach-toggle-button", "Detach On", "fitbit", // function() { // }, // null // ], // left : [], // right : [], // }); // var dither_control = Button( documents_box, { group_id : 'dither-control', // filler : 'dither-button-clip', // center : [ "dither-toggle-button", "Dithering On/Off", "fitbit", // function() { // elastic_control.mappo.deactivate(); // documents_control.mappo.nodraw (); // documents_control.mappo.mode = 'dither'; // documents_control.mappo.redraw (); // }, // null // ], // left : [], // right : [], // // up : [], // // down : [], // }); // var elastic_control = Button( documents_box, { group_id : 'elastic-control', // filler : 'elastic-button-clip', // center : [ "fisheye-toggle-button", "Fisheye On/Off", "bubble_chart", // function() { // dither_control.mappo.deactivate(); // documents_control.mappo.nodraw (); // documents_control.mappo.mode = 'elastic'; // documents_control.mappo.redraw (); // }, // null // ], // left : [], // right : [], // // up : [], // // down : [], // }); // var fisheye_control = Button( documents_box, { group_id : 'fisheye-control', // filler : 'fisheye-button-clip', // center : [ "fisheye-toggle-button", "Fisheye On/Off", "blur_circular" ], // left : [], // right : [], // up : [], // down : [], // }); // function xxx_redraw_documents( new_mode ) { // if (new_mode == documents_mode) { // // do nothing // } else { // d3.select('#'+documents_mode+'-toggle-button').dispatch("click"); // turn off old // documents_mode = new_mode; // d3.select('#'+documents_mode+'-toggle-button').dispatch("click"); // turn on new // } // } xxxinput:disabled { -webkit-filter: blur(1px); opacity:0.2; } // d3.select ('#xxx-search-pin-button').on( 'click', function () { // if (d3.select(this).select('i').classed('md-light')) { // not selected yet // d3.select(this).select('i').classed("md-light", false); // } else { // L_results.style( 'display', 'none' ); // d3.select ('#search-box').style( 'display', 'none' ); // d3.select(this).select('i').classed("md-light", true); // d3.select('#search-control').selectAll('i').classed('md-light', true); // } // }); // var spin = d3.select('#search-pin-buttonxxx') // .append('svg'); // spin.append("clipPath") // .attr("id", "search-button-clip") // .append("rect") // .attr("x",0) // .attr("y", FILL_LEVELS10[ Math.floor( search_results / 10 ) ]) // .attr("height", 28) // .attr("width", 28) // ; // spin.append("circle") // .attr("clip-path","url(#search-button-clip)") // .attr("cx", 14) // .attr("cy", 14) // .attr("r", 14) // .attr("fill","SteelBlue") // ; // d3.select('#dither-toggle-button').dispatch("click"); // // dither_control.selectAll('i').classed("md-light", false); // switch on button // // dither_control.selectAll("i.material-icons").classed("md-light", false); // activate all arrows // // dither_control.mappo.fill_level( DOCUMENT_SET[1][ Math.floor (percentage_documents / DOCUMENT_SET[0] ) ] ); // } else if (documents_mode == 'elastic') { // d3.select('#elastic-toggle-button').dispatch("click"); // // } else if (documents_mode == 'fisheye') { // } else { // } function XXXXXController( controller ) { var c = d3.select("#mybody") .append( "div" ) .attr("id", controller.id) .classed("controller", true) .classed('mappo-overlayish', true) .on ('mouseover', function () { L_islands.selectAll('text').attr("filter", "url(#filter-blur)") c.hint(); // d3.select(this).selectAll('table.wippy') // .transition() // .style('opacity', 1) // .duration(300) // ; }) .on ('mouseout', function () { c.dehint(); L_islands.selectAll('text').attr("filter", "") // d3.select(this).selectAll('table.wippy') // .transition() // .style('opacity', 0.1) // .duration(300) // ; }) ; c.buttons = []; // will hold all added buttons c.deactivate = function( exception ) { // console.log('buttons', this.buttons, 'except', exception); this.buttons.filter( b => b.attr('id') != exception ) // not that one .filter( b => b.mappo.is_activated()) // only those .forEach( b => b.mappo.deactivate() ) ; }; c.hint = function() { c.selectAll('table.wippy') .transition() .style('opacity', 1) .duration(300) .on('start', function() { c.style('display', 'flex'); }) ; }; c.dehint = function() { c.selectAll('table.wippy') .transition() .style('opacity', 0.0) .duration(900) .on('end', function() { c.style('display', 'none'); }) ; }; c.append_symbol = function( symbol ) { var div = this.append( 'div' ) .attr('id', symbol.id) .style( 'text-align', symbol.alignment ? symbol.alignment : 'center' ) .style( 'width', '100%' ) .text( symbol.text ) }, c.append_xor_button = function( button ) { c.append_symbol( { text : BUTTON_XOR, alignment : 'center' } ); return this.append_button( button ); }, c.append_button = function( button ) { // console.log( 'old append button', button.group_id, this ); var table = this.append( "table" ) .attr('id', button.group_id) .classed("wippy", true); var up = table.append("tr") .append("td") .attr("colspan", 3) .append("button") .attr("id", ( button.vertical === undefined ? "" : button.vertical.up.id )) .attr("title", ( button.vertical === undefined ? "" : button.vertical.up.title )) .classed("tiny", true) .classed("mdl-button", true) ; up.append("i") .classed("material-icons " + ( button.vertical === undefined ? "invisible" : "md-inactive md-light" ), true) .text("keyboard_arrow_up") ; var tr = table.append("tr"); var left = tr.append("td") .append("button") .attr("id", ( button.horizontal === undefined ? "" : button.horizontal.left.id )) .attr("title", ( button.horizontal === undefined ? "" : button.horizontal.left.title )) .classed("tiny", true) .classed("mdl-button", true); left .append("i") .classed("material-icons " + ( button.horizontal === undefined ? "invisible" : "md-inactive md-light" ), true) .text("keyboard_arrow_left") ; var center = tr.append("td") .append("button") .attr("id", button.center[0]) .attr("title", button.center[1]) .classed("mdl-button mdl-button--fab ui-playButton", true) .classed("mdl-button--colored", false) // signal that button is disabled // .classed("mdl-button mdl-button--fab mdl-button--colored ui-playButton", true) .attr("data-upgraded", ",MaterialButton"); center .append("i") .classed("material-icons md-inactive md-light", true) .text(button.center[2]) ; center.mappo = { activate : button.center[3], deactivate : button.center[4] }; var right = tr.append("td") .append("button") .attr("id", ( button.horizontal === undefined ? "" : button.horizontal.right.id )) .attr("title", ( button.horizontal === undefined ? "" : button.horizontal.right.title )) .classed("tiny", true) .classed("mdl-button", true); right.append("i") .classed("material-icons " + ( button.horizontal === undefined ? "invisible" : "md-inactive md-light" ), true) .text("keyboard_arrow_right") ; var down = table.append("tr"); down.append("td"); down.append("td") // .attr("colspan", 3) .append("button") .attr("id", ( button.vertical === undefined ? "" : button.vertical.down.id )) .attr("title", ( button.vertical === undefined ? "" : button.vertical.down.title )) .classed("tiny", true) .classed("mdl-button", true) .append("i") .classed("material-icons " + ( button.vertical === undefined ? "invisible" : "md-inactive md-light" ), true) .text("keyboard_arrow_down") ; if (is_locked( button.group_id )) { down.append("td") .append("i") .classed("material-icons", true) .text("lock") ; } else { down.append("td"); } table.mappo = { 'is_button' : function() { return center.select("i").text(); }, 'change_button' : function(text) { center.select("i").text(text); }, 'morph_button' : function(morph) { var activated = this.is_activated(); // save state if (activated) { this.deactivate ( table ); } if (morph.center) { if (morph.center.symbol) { center.select("i").text(morph.center.symbol); } if (morph.center.title) { center.attr('title', morph.center.title); } if (morph.center.activate) { center.mappo.activate = morph.center.activate; } if (morph.center.deactivate) { center.mappo.deactivate = morph.center.deactivate; } } if (morph.vertical) { table.mappo.vertical = morph.vertical; } if (morph.horizontal) { table.mappo.horizontal = morph.horizontal; } if (morph.mappo) { Object.keys(morph.mappo).forEach(function (key) { //console.log("morph mappo ", key, morph.mappo[key]); table.mappo[key] = morph.mappo[key]; }); } if (activated) { this.activate( table ); } }, 'disable_button' : function(id) { center.classed("mdl-button--colored", false); }, 'enable_button' : function(id) { if ( localStorage.locks.includes( button.group_id) ) return; center.classed("mdl-button--colored", true); }, 'disable_wippy' : function(id) { if (id === undefined) { // all table.selectAll('i').classed("md-light", true); } else { table.select('#'+id).select('i').classed("md-light", true); } }, 'enable_wippy' : function(id) { if (id === undefined) { // all table.mappo.enable_horizontal_wippy(); table.mappo.enable_vertical_wippy(); } else { table.select('#'+id).select('i').classed("md-light", false); } }, 'enable_horizontal_wippy' : function() { if (table.mappo.horizontal) { // otherwise we do not care var h = table.mappo.horizontal; if (h.less2go(h)) { table.mappo.enable_wippy(h.left.id); } if (h.more2go(h)) { table.mappo.enable_wippy(h.right.id); } } }, 'enable_vertical_wippy' : function() { if (table.mappo.vertical) { // otherwise we do not care var v = table.mappo.vertical; if (v.less2go(v)) { table.mappo.enable_wippy(v.down.id); } if (v.more2go(v)) { table.mappo.enable_wippy(v.up.id); } } }, 'activate' : function() { center.mappo.activate( table, center ); // application semantics center.select('i').classed("md-light", false); // switch on button // button.center[3] (table, center); // application semantics // console.log("activate", button.group_id, table.mappo.vertical, table.mappo.horizontal ); if (table.mappo.vertical && table.mappo.vertical.assert) { table.mappo.vertical.assert( table.mappo.vertical ); } if (table.mappo.horizontal && table.mappo.horizontal.assert) { table.mappo.horizontal.assert( table.mappo.horizontal ); } table.mappo.enable_wippy(); }, 'deactivate' : function() { center.mappo.deactivate( table, center ); // application semantics center.select('i').classed("md-light", true); // switch off button table.mappo.disable_wippy(); // button.center[4] (table, center); // application semantics }, 'is_activated' : function() { // console.log('has light?', center.select('i').text(), center.select('i').classed('md-light') ); return ! (center.select('i').classed("md-light")); }, 'blur' : function() { table.style("filter", "url(#button-blur)"); }, 'unblur' : function() { table.style("filter", ""); }, 'level' : function(level) { //console.log("level", level, button.filler); d3.select('#'+button.filler).select('rect') .attr("y", level); }, }; if (button.filler) { var svg = d3.select('#'+button.center[0]) .append('svg'); svg.append("clipPath") .attr("id", button.filler) .append("rect") .attr("x",0) .attr("y", 28) .attr("height", 28) .attr("width", 28) ; svg.append("circle") .attr("clip-path","url(#"+button.filler+")") .attr("cx", 14) .attr("cy", 14) .attr("r", 14) .attr("fill","SteelBlue") ; } // if (button.configuration) { // center.on( 'dblclick', function () { // button.configuration(); // }); // } // table.on ('mouseover', function () { // console.log( 'mouseover', button.group_id ); // }); if (button.continuations) { table.on ('mouseover', function () { button.continuations.map(c => c.hint()); }); table.on ('mouseout', function () { button.continuations.map(c => c.dehint()); }); } center.on ('click', function () { if (center.classed('mdl-button--colored')) { // it is enabled if (center.select('i').classed("md-light")) { // enabled, off => turn on if (table.mappo.activate) { table.mappo.activate(table, center); } center.select('i').classed("md-light", false); // switch on button table.mappo.enable_wippy(); // table.selectAll("i.material-icons").classed("md-light", false); // activate all arrows } else { center.select('i').classed("md-light", true); // switch off button table.mappo.disable_wippy(); // table.selectAll("i.material-icons").classed("md-light", true); // deactivate all arrows if (table.mappo.deactivate) { table.mappo.deactivate(table, center); } } } else { } }); if (button.horizontal) { table.mappo.horizontal = button.horizontal; left.on( 'click', function () { if (! table.mappo.is_activated()) { return; } var h = table.mappo.horizontal; if ( h.more2go(h)) { table.mappo.enable_wippy(button.horizontal.right.id) }; if (h.less2go(h)) { // for safety, should not be necessary h.less(h); } if (! h.less2go(h)) { table.mappo.disable_wippy(button.horizontal.left.id); } }); right.on( 'click', function () { if (! table.mappo.is_activated()) { return; } var h = table.mappo.horizontal; if ( h.less2go(h)) { table.mappo.enable_wippy(button.horizontal.left.id) }; if (h.more2go(h)) { h.more(h); } if (! h.more2go(h)) { table.mappo.disable_wippy(button.horizontal.right.id); } }); } if (button.vertical) { table.mappo.vertical = button.vertical; up.on( 'click', function () { //console.log("click up", "down", button.vertical.down.id, "up", button.vertical.up.id); if (! table.mappo.is_activated()) { return; } var h = table.mappo.vertical; if (h.less2go(h) ) { table.mappo.enable_wippy(button.vertical.down.id) }; if (h.more2go(h)) { h.more(h); } if (! h.more2go(h)) { table.mappo.disable_wippy(button.vertical.up.id); } }); down.on( 'click', function () { if (! table.mappo.is_activated()) { return; } var h = table.mappo.vertical; if (h.more2go(h)) { table.mappo.enable_wippy(button.vertical.up.id) }; if (h.less2go(h)) { h.less(h); } if (! h.less2go(h)) { table.mappo.disable_wippy(button.vertical.down.id); } }); } c.buttons.push( table ); // register the button in the container return table; } return c; } // var attach_button = escalation_select_controller.append_xor_button( // { group_id : 'attach-control', // center : [ "attach-radio-button", "Attachment", 'workspaces', // function() { // escalation_select_controller.deactivate( 'attach-control' ); // exceptions // }, // function() { // }, // ], // horizontal : { // more : function (self) { // }, // less : function (self) { // }, // more2go : function (self) { // return 1; // }, // less2go : function (self) { // return 1; // }, // left : { id : 'inplace-zoom-smaller-button', title : 'Smaller Magnifier', action : function() {} }, // right : { id : 'inplace-zoom-bigger-button', title : 'Bigger Magnifier', action : function() {} }, // }, // vertical : { // more : function (self) { // }, // less : function (self) { // }, // more2go : function (self) { // return 1; // }, // less2go : function (self) { // return 1; // }, // down : { id : 'xxxxfocus-smaller-button', title : 'Smaller Focus' }, // up : { id : 'xxxxfocus-higher-button', title : 'Bigger Focus' }, // }, // }); // attach_button.mappo.enable_button(); // TODO escalation_button.mappo.mode = 'detach'; //-- magnifier --------------------------------------- // console.log( magnifier.node().getBBox() ); //------------------------------------------------------------------------- //var escalation_controller = new Controller( { id : 'escalation-controller', class : 'controller', parent : '#mybody' } ); //intercept_button.activate(); // signal that button is activated, triggers changes // noescalation_button.mappo.activate(); // function documents_nodraw() { // L_documents.style( 'display', 'none' ); // } // function documents_withdraw() { // @@@@@ // // switch( position_control.mappo.is_button() ) { // // case 'dashboard': // // circle_elastic_nodraw(); // // // rect_dither_redraw( L_documents, [] ); // // break; // // case 'grain': // // circle_elastic_nodraw(); // // break; // // default: // // console.log('undraw mode fucked up', position_control.mappo.is_button() ); // // } // circle_elastic_nodraw(); // SURE? // documents_nodraw(); // } // function documents_redraw( @@@ ) { // L_documents.style( 'display', 'block' ); // //console.log( "redraw rect?", elastic_button.mappo.is_button() ); // switch( elastic_button.is_button() ) { // switch( 'dashboard' ) { // case 'dashboard': // function doc_dim_rect (lambda, min, max, impact, orientation) { // var w = (lambda) * min + lambda * impact * max; // var h = w * SQRT2; // if (orientation == 'horizontal') { // return [ h, w ]; // } else { // return [ w, h ]; // } // } // var orientation = 'horizontal'; // var DOCS = documents.map (function(d) { // var w, h; // [ w, h ] = doc_dim_rect (origin_button.horizontal.lambda, 10, 40, d.impact, orientation); // return { "x" : (d.x + (Math.random() - 0.5) * elastic_button.vertical.dither / 5) * DX, // "y" : (GRID[1] - d.y + (Math.random() - 0.5) * elastic_button.vertical.dither / 5) * DY, // "label" : d.label, // "id" : d.id.replace(/:/g, '-xcolonx-').replace(/\//g, '-xslashx-'), // "impact" : d.impact, // 'r' : (origin_button.horizontal.lambda) * searchResultScale( d.impact ), // 'deltax' : - w / 2, // 'deltay' : - h / 2, // 'width' : w, // 'height' : h, // } // }); // // console.log("DOCS", DOCS.map( (d) => { return d.id } )); // rect_dither_redraw ( DOCS, // function(impact) { return resultColorScale( impact ); } ); // elastic_simulation( DOCS, elastic_button.horizontal.radius ); // break; // case 'grain': // // // console.log("documents", documents.map( (d) => { return d.id } )); // var DOCS = documents.map (function(d) { // return { "x" : (d.x + (Math.random() - 0.5) * elastic_button.vertical.dither / 5) * DX, // "y" : (GRID[1] - d.y + (Math.random() - 0.5) * elastic_button.vertical.dither / 5) * DY, // "id" : d.id.replace(/:/g, '-xcolonx-').replace(/\//g, '-xslashx-'), // "label" : d.label, // "impact" : d.impact, // 'r' : (origin_button.horizontal.lambda) * searchResultScale( d.impact ) // } // }); // // console.log("DOCS", DOCS.map( (d) => { return d.id } )); // circle_elastic_redraw( DOCS, // function(impact) { return resultColorScale( impact ); }, // ); // elastic_simulation( DOCS, elastic_button.horizontal.radius ); // break; // default: // console.log('redraw mode fucked up', position_control.mappo.is_button() ); // } // elastic_simulation( DOCS, elastic_button.horizontal.radius ); // } //------------------------------------------------------------------------- // var elastic_select_controller = new XOR_Controller( { id : 'elastic-select-controller', parent : '#mybody', class : 'controller' } ); // elastic_button.mappo.morph_button( { // center : // { // title : 'Show Rectangles', // symbol : 'dashboard' // }} ); // origin_button.center.drawing = { // nodraw : function() { // L_documents.style( 'display', 'none' ); // }, // undraw : function() { // circle_elastic_nodraw(); // SURE? // L_documents.style( 'display', 'none' ); // }, // redraw : function () { // } // }; // elastic_select_controller.deactivate( 'elastic-set-circle-table' ); // exceptions // elastic_button.mappo.morph_button( { // center : // { // title : 'Show Circles', // symbol : 'grain' // }}); // origin_button.morph_button( { mappo : { // nodraw : function() { // L_documents.style( 'display', 'none' ); // }, // undraw : function() { // //console.log('mappo undraw'); // circle_elastic_nodraw(); // SURE? // L_documents.style( 'display', 'none' ); // }, // }}); var elastic_button = elastic_controller.append_button( { group_id : 'elastic-table', continuations : [ elastic_select_controller ], // filler : 'elastic-button-clip', center : [ "elastic-button", "Elasticity", "grain", function() {}, function() {}, // @@@ never to be turned off ], semantics : { redraw : function( documents, lambda ) { // @@ depend on face value elastic_set_circle_button.semantics.redraw( documents, lambda, elastic_button.vertical.dither, elastic_button.horizontal.dither ); }, withdraw : function() { elastic_set_circle_button.semantics.withdraw(); } }, }); elastic_button.enable_button(); } var xxx_rect_dithered_scaler = { // lambda : 1.0, // STEPS : 4, // orientation : 'horizontal', redraw : function (documents) { console.log("redraw dithered documents ", documents.length); // var DOCS = documents.map (function(d) { return { "x" : (d.x + Math.random() - 0.5) * DX, // "y" : (GRID[1] - d.y + Math.random() - 0.5) * DY, "label" : d.label, "id" : d.id, "impact" : d.impact }}); var t_docs = L_documents .selectAll("g") .data(documents) // .data(DOCS) ; t_docs.enter() .append("g") .attr( "transform", function(d,i) { // return dxdy2translate2( d.x, d.y ); return dxdy2translate2( (d.x + Math.random() - 0.5) * DX, (GRID[1] - d.y + Math.random() - 0.5) * DY ); }) .append("a") .attr ("xlink:href", function(d,i) { return "/documents/" + d.id; } ) .attr ("xlink:show", function(d,i) { return "new_" + d.id; }) .append("rect") .attr( "id", function(d,i) { return d.id }) .attr ("width", 10) .attr ("height", 10) // .style("fill",function() { // return "hsl(" + Math.random() * 360 + ",100%,50%)"; // }) .classed('document-5', true) ; t_docs.exit().remove(); this.rescale (this.lambda, this.orientation); }, rescale : function (lambda, orientation) { var rs = L_documents.selectAll("g").selectAll(".document-5"); rs.each (function (d, i) { var w, h; [ w, h ] = doc_dim_rect (lambda, 10, 40, d.impact, orientation); d3.select(this).transition() .attr ("x", - w / 2) .attr ("y", - h / 2) .attr ("width", w) .attr ("height", h) .duration(500); }); }, // more : function () { // this.lambda += 1 / this.STEPS; // this.rescale (this.lambda, this.orientation); // }, // less : function () { // this.lambda -= 1 / this.STEPS; // this.rescale (this.lambda, this.orientation); // }, // more2go : function () { // return this.lambda < 1.0; // }, // less2go : function () { // return this.lambda > 0.0; // } }; // var SCALE_CONDUIT = rect_dithered_scaler; var Conduit_PerlDistros = { escalations : [ function (g, d) { console.log ("summary"+d); g.append("foreignObject") .attr("x", -450) .attr("y", -300) .attr("width", '900px') .attr("height", '600px') .style("background-color", "white") .append("xhtml:iframe") .attr("sandbox", "allow-scripts allow-same-origin allow-forms") .attr("height", "100%") .attr("width", "100%") .attr("src", "/cpan-dist-summary") ; }, function (g, d) { console.log ("detail"); g.append("foreignObject") .attr("x", -450) .attr("y", -300) .attr("width", '900px') .attr("height", '600px') .style("background-color", "green") .append("xhtml:iframe") .attr("sandbox", "allow-scripts allow-same-origin allow-forms") .attr("height", "100%") .attr("width", "100%") .attr("src", "http://192.168.56.101:8000/content.html") // .text("http://192.168.56.101:8000/content.html") ; } ], }; // var SUPER_CONDUIT = { // 0 : { // single : { // limit : 10, // conduit : Conduit_PerlDistros; // } // } // }; var DOCUMENT_CONDUIT = Conduit_PerlDistros; // var SUPER_CONDUIT = { // 0 : { // single : { // limit : 10, // conduit : Conduit_PerlDistros; // } // } // }; // console.log("redraw documents ", documents.length); // //console.log (documents.map (function (d) { return d.id })); // var DOCS = documents.map (function(d) { return { "x" : (d.x + Math.random() - 0.5) * DX, // "y" : (GRID[1] - d.y + Math.random() - 0.5) * DY, "label" : d.label, "id" : d.id, "impact" : d.impact }}); // // console.log(DOCS); // layout_documents( L_documents, DOCS, // function(impact) { return "hsl(" + 360 + "," + searchResultColorScale( impact ) + "%,50%,1)"; } ); // var t_docs = L_documents // .selectAll("a") // .data(DOCS) // ; // t_docs.enter() // .append("a") // .attr ("xlink:href", function(d,i) { return "/documents/" + d.id; } ) // .attr ("xlink:show", function(d,i) { return "new_" + d.id; }) // .append("circle") // .attr( "id", function(d,i) { return d.id }) // .style("fill",function() { // return "hsl(" + Math.random() * 360 + ",100%,50%)"; // }) // .attr( 'r', function(d) { return searchResultScale( d.impact ); }) // .attr( 'cx', function(d) { return d.x; }) // .attr( 'cy', function(d) { return d.y; }) // // .classed('document-5', true) // ; // t_docs.exit().remove(); // var simulation = d3.forceSimulation(DOCS) // create a simulation // .alpha( 1 ) // .velocityDecay (0.7) // .alphaDecay ( 0.2) // .force('collision', d3.forceCollide().radius(10)) // .on('tick', function() { // // console.log("tick"); // t_docs = L_documents // .selectAll("circle") // t_docs // .attr( 'cx', function(d) { return d.x; }) // .attr( 'cy', function(d) { return d.y; }); // ; // }) // ; // .append("g") // .attr( "transform", function(d,i) { // return dxdy2translate( d.x, d.y ); // "translate(" + d.x * DX + "," + (GRID[1] - d.y) * DY + ") scale(1)"; // left-upper is 0,0 // }) // .attr( 'cx', function(d) { return d.x * DX; }) // .attr( 'cy', function(d) { return (GRID[1] - d.y) * DY; }); // .attr ("x", 0) // Math.random() * DX) // .attr ("y", 0) // Math.random() * DY) // .append("rect") // .attr( "id", function(d,i) { return d.id }) // // .attr ("x", 0) // Math.random() * DX) // // .attr ("y", 0) // Math.random() * DY) // .attr ("width", 10) // .attr ("height", 10) // .style("fill",function() { // return "hsl(" + Math.random() * 360 + ",100%,50%)"; // }) // .classed('document-5', true) // .append("text") // .attr ("font-size", function(v) { // return documentFontScale(v.impact) +"px" // }) // .text(function(v) { return v.label; }) // .style("fill",function() { // return "hsl(" + Math.random() * 360 + ",100%,50%)"; // }) // .attr( "transform", function(d,i) { // return dxdy2translate( d.x, d.y ); // "translate(" + d.x * DX + "," + (GRID[1] - d.y) * DY + ") scale(1)"; // left-upper is 0,0 // }); //console.log ('invoking rescale' + SCALE_CONDUIT.lambda); // this.rescale (this.lambda, this.orientation); // enterings // .on("mouseover", function (d) { // // console.log("mouseover",d); // // var a = d3.select(this.parentNode); // // d.pausing = null; // d.pinning = null; // d.stage = 0; // var g = L_paging.append("g") // .attr ("transform", dxdy2translate( d.x, d.y ) ); // "translate(" + d.x * DX + "," + (GRID[1] - d.y) * DY + ") scale(1)"); // _fade_in_stage (d, g); // }) // ; // var t_docs = L_documents // .selectAll("text") // .data(documents) // ; // t_docs.exit().remove(); // t_docs.enter() // .append("text") // .attr( "id", function(d,i) { return d.id }) // .attr ("font-size", function(v) { // return documentFontScale(v.impact) +"px" // }) // .text(function(v) { return v.label; }) // .style("fill",function() { // return "hsl(" + Math.random() * 360 + ",100%,50%)"; // }) // .attr( "transform", function(d,i) { // return dxdy2translate( d.x, d.y ); // "translate(" + d.x * DX + "," + (GRID[1] - d.y) * DY + ") scale(1)"; // left-upper is 0,0 // }); // ; // enterings // .append("text") // .attr ("x", 10 * Math.random()) // dislocate somewhat // .attr ("y", 10 * Math.random()) // // .classed('document', true) // .attr ("font-size", function(v) { return documentFontScale(v.impact) +"px" }) // .text(function(v) { return v.label; }) }, // rescale : function (lambda, orientation) { // var rs = L_documents.selectAll("g").selectAll(".document-5"); // rs.each (function (d, i) { // //console.log ("rescale ", d.impact); // var w, h; // [ w, h ] = doc_dim_rect (lambda, 10, 40, d.impact, orientation); // //console.log (w, h); // d3.select(this).transition() // .attr ("x", - w / 2) // .attr ("y", - h / 2) // .attr ("width", w) // .attr ("height", h) // .duration(500); // }); // }, // // more : function (t_docs) { // // this.lambda += 1 / this.STEPS; // // console.log(this.lambda); // // // this.rescale (this.lambda, this.orientation); // // }, // // less : function (t_docs) { // // this.lambda -= 1 / this.STEPS; // // console.log(this.lambda); // // // this.rescale (this.lambda, this.orientation); // // }, // // more2go : function () { // // return this.lambda < 1.0; // // }, // // less2go : function () { // // return this.lambda > 0.0; // // } // };
askdsdfsdsdffds sdfsdfsdfsdlksdf sdjflksdj fsdhfk sdkjhf skdjf kjsdhf kjshf jsd fjsd jsd jfhsd
// d3.select ('#xxxdocument-more-button').on ('click', function () { // console.log ("current percentage", percentage_documents); // if (d3.select ('#documents-toggle-button').select('i').classed('md-light')) { // documents are disabled => ignore // } else if (percentage_documents >= 100) { // the end of the line // } else { // we still could add more documents // d3.select('#document-less-button').select('i').classed("md-light", false); // activate up button // percentage_documents += DOCUMENT_SET[0]; // increment to the percentage we want // var nr_documents = Math.floor (NR_DOCUMENTS / 100 * percentage_documents); // console.log ("needed", percentage_documents, nr_documents); // var fill = DOCUMENT_SET[1][ Math.floor (percentage_documents / DOCUMENT_SET[0] ) ]; // d3.select('#document-button-clip').select('rect') // .attr("y", fill); // // d3.select('#document-percentage').text (percentage_documents + "%"); // if (nr_documents >= NR_DOCUMENTS) { // no more documents // d3.select(this).select('i').classed("md-light", true); // nr_documents = NR_DOCUMENTS; // maxed out // } // if (nr_documents >= DOCUMENTS.length) { // there are still some to fetch // d3.select('#document-control').style("filter", "url(#button-blur)"); // d3.select('#documents-toggle-button').classed("mdl-button--colored", false); // signal that button is disabled // promise_doc_fetch_and_render (last_document_batch_fetched + 1, nr_documents, // function () { // table.mappo.enable_button(); // table.mappo.unblur(); // }); // then initate loading, and eventually rendering // } else { // we have all local already // documents = DOCUMENTS.slice(0, nr_documents); // SCALE_CONDUIT.redraw (documents); // } // } // }); // d3.select ('#xxxdocument-less-button').on ('click', function () { // if (d3.select ('#documents-toggle-button').select('i').classed('md-light')) { // documents disabled => ignore // } else if (percentage_documents <= 0) { // the end of the line // } else { // d3.select('#document-more-button').select('i').classed("md-light", false); // activate up button // percentage_documents -= DOCUMENT_SET[0]; // var nr_documents = Math.floor (NR_DOCUMENTS / 100 * percentage_documents); // console.log (percentage_documents, nr_documents); // if (nr_documents <= 0) { // nr_documents = 0; // hitting rock bottom // d3.select(this).select('i').classed("md-light", true); // deactivate down button // } // var fill = DOCUMENT_SET[1][ Math.floor (percentage_documents / DOCUMENT_SET[0] ) ]; // d3.select('#document-button-clip').select('rect') // .attr("y", fill); // // d3.select('#document-percentage').text (percentage_documents + "%"); // documents = DOCUMENTS.slice(0, nr_documents); // SCALE_CONDUIT.redraw (documents); // } // }); // var brush = d3.brush() // .extent( [ [vp0.x, vp0.y], [vp0.dx,vp0.dy] ] ) // .on("end", function() { // //console.log( d3.event.selection ); // var extent = d3.event.selection; // L_bookmarks.append("rect") // .attr("x", extent[0][0]) // .attr("y", extent[0][1]) // .attr("width", extent[1][0]-extent[0][0]) // .attr("height", extent[1][1]-extent[0][1]) // .classed('region-extent', true) // ; // var kx = vpx.dx / ( extent[1][0]-extent[0][0] ); // contraction in X axis // var ky = vpx.dy / ( extent[1][1]-extent[0][1] ); // along Y // console.log (kx, ky); // var k = kx < ky ? kx : ky; // take the smaller // var t = d3.zoomIdentity.translate((vp0.x - extent[0][0]) / zoom * k, (vp0.y - extent[0][1]) / zoom * k) // .scale(k); // console.log("t ", t); // zoomer.transition() // .duration(3000) // .call(zoomx.transform, t) // .on("end", function() { // console.log("ended", brush); // L_bookmarks.selectAll("rect").remove(); // L_bookmarks.on(".brush", null); // // L_bookmarks.call(brush.move, null); // //brush.clear(xx); // // d3.select(this).call(brush.move, null); // }) // }) // ; // L_bookmarks.call( brush ); // function x_render_documents(documents) { // var t_docs = L_documents // .selectAll("g") // .data(documents); // t_docs.exit().remove(); // t_docs.enter() // .append("g") // .attr ("transform", function(v,i) { return "translate(" + v.x + "," + v.y + ") scale(1)"; }) // // .append("a") // // .attr ("xlink:href", function(v,i) { return "/documents/" + v.id + ".pdf"; } ) // // .attr ("xlink:show", "new") // .append("rect") // // .attr ("x", -5) // // .attr ("y", -5) // // .attr ("width", 10) // // .attr ("height", 10) // .classed('document-5', true) // // .append("svg:title") // not quite correct position, but it seems to work // // .text(function(v,i) { return v.label; }) // ; // console.log ('invoking rescale' + SCALE_CONDUIT.lambda); // SCALE_CONDUIT.rescale (L_documents.selectAll('g').selectAll('rect'), SCALE_CONDUIT.lambda); // } // function documents_transition_density_to_summary (documents) { // L_documents // .selectAll("rect") // .transition() // .attr ("x", function(v,i) { return - v.impact * 40 / 2; }) // .attr ("y", function(v,i) { return - v.impact * 40 / 2; }) // .attr ("width", function(v,i) { return v.impact * 40; }) // .attr ("height", function(v,i) { return v.impact * 40 * SQRT2; }) // .duration(1000) // documents_transition_impact_to_summary(documents); // } // function documents_transition_impact_to_summary (documents) { // L_documents // .selectAll("g") // .append("text") // .attr("text-anchor", "start") // .attr("font-size", function(v, i) { return Math.floor(5 * v.impact) + "px" }) // .each(function (d) { // var lines = wordwrap(d.label, 10); // d3.select(this) // .append("tspan") // // .attr ("dominant-baseline", "top") // // .attr ("alignment-baseline", "top") // .attr ("x", function(v,i) { return - v.impact * 30 / 2; }) // .attr ("y", function(v,i) { return - v.impact * 20 * SQRT2 / 2; }) // // .attr ("textLength", function(v,i) { return v.impact * 400 }) // .text(lines[0]) // ; // for (var i = 1; i < lines.length; i++) { // d3.select(this) // .append("tspan") // .attr ("x", function(v,i) { return - v.impact * 30 / 2; }) // .attr("dy", "1em") // .text(lines[i]) // } // }) // ; // L_documents // .selectAll("g") // .on("mouseover", function (d) { // var g = d3.select(this); // var t = str2transform (g.attr("transform")); // var scale = 2 * zoom / d.impact; // t.scale = scale; // t.translateX -= d.impact * 30 / 4 * scale; // t.translateY -= d.impact * 30 * SQRT2 / 4 * scale; // // console.log (t); // g // .transition() // .attr("transform", "translate("+(t.translateX)+","+(t.translateY)+") scale("+(t.scale)+")") // .duration(1000) // }) // .on("mouseout", function (d) { // var g = d3.select(this); // var t = str2transform (g.attr("transform")); // t.scale = 1; // t.translateX = d.x; // t.translateY = d.y; // g // .transition() // .attr("transform", "translate("+(t.translateX)+","+(t.translateY)+") scale("+(t.scale)+")") // .duration(1000) // }) // ; // // console.log (wordwrap ("this is a long text with some words", 10)); // } // function documents_transition_summary_to_embedded (documents) { // L_documents // .selectAll("text") // .remove() // ; // L_documents // get rid of event handling for the document // .selectAll("g") // .on('mouseover', function () {}) // .on('mouseout', function () {}) // ; // L_documents // .selectAll("g") // .append("image") // .attr ("x", function(v,i) { return - v.impact * 30 / 4; }) // .attr ("y", function(v,i) { return - v.impact * 30 / 4; }) // .attr ("width", function(v,i) { return v.impact * 30; }) // .attr ("height", function(v,i) { return v.impact * 30 * SQRT2; }) // .attr ("xlink:href", function(v,i) { return v.svg + "." + v.cpage + ".svg"; }) // .on('mouseover', function () { // var v = d3.select (this).data()[0]; // paging = { // x0 : v.x - v.impact * 30 / 4, // y0 : v.y - v.impact * 30 / 4, // dx : v.impact * 30, // pages : [], // v : v // }; // paging.pages.push ({ svg : v.svg + "." + v.cpage + ".svg" , // current page is left-most // dir : 'forward' } ); // for (var p = v.cpage-1; p >= 0; p--) { // maybe some of the previous pages // if (paging.pages.length < MAX_PAGES) { // paging.pages.push ({ svg : v.svg + "." + p + ".svg", dir : 'backward' }); // } // } // var r = L_paging // .append("rect") // .classed('paging', true) // .attr ("x", function(v,i) { return paging.x0 - (paging.dx * (MAX_PAGES-1))*1.1; }) // .attr ("y", function(v,i) { return paging.y0 - paging.dx * SQRT2 * 0.1; }) // // .attr ("rx", '0.001') // // .attr ("ry", '0.001') // .attr ("width", function(v,i) { return (paging.dx * MAX_PAGES) * 1.2; }) // .attr ("height", function(v,i) { return paging.dx * SQRT2 * 1.2; }) // .style ('opacity', 1) // // .on('dblclick', function () { // // console.log ("rect dblclick"); // // d3.event.stopPropagation(); // click here should not trigger a zoom event // // }) // .on('mouseout', function () { // // console.log ("L_paging mouseout"); // paging.pages = []; // render_paging(); // var r = d3.select (this) // .selectAll('rect') // .remove(); // // r.style ('opacity', 0); // // r.transition() // // .style ('opacity', 0) // // .duration(1000) // // .on ('end', function () { // // this.remove(); // // // this.selectAll('image').remove(); // // }) // // ; // }) // ; // // r.transition() // // .style ('opacity', 1) // // .duration(1000) // // .on ('end', function () { // render_paging(); // // }) // // ; // // L_paging // // ; // }) // // .on('mouseout', function () { // // paging.pages = []; // // render_paging(); // // L_paging.selectAll("rect") // // .remove() // // ; // // }) // // .on('mouseout', function () { // // var g = d3.select (this.parentNode); // // g.selectAll("rect") // // .transition() // // .attr ("x", function(v,i) { return v.x - v.impact * 30 / 4; }) // // .attr ("width", function(v,i) { return v.impact * 30; }) // // .duration(1000) // // }) // // .on('click', function () { // // d3.select (this) // // .transition() // // .attr ("x", function(v,i) { return v.x - v.impact * 30 / 4 - v.impact * 30; }) // move left // // .duration(1000) // ; // } // gg.append("rect") // white-ish background // .attr ("x", -450) // half-size left // .attr ("y", -300) // half-size up // .attr ("width", 900) // .attr ("height", 600) // ; // .on("mouseover", function (d) { // console.log("mouseover innen"); // }) //.attr("srcdoc", "
sdfskklsdfs
sdfskklsdfs
sdfskklsdfs
sdfskklsdfs
sdfskklsdfs
sdfskklsdfs
sdfskklsdfs
sdfskklsdfs
sdfskklsdfs
sdfskklsdfs
sdfskklsdfs
sdfskklsdfs
sdfskklsdfs
sdfskklsdfs
sdfskklsdfs
sdfskklsdfs
sdfskklsdfs
sdfskklsdfs
sdfskklsdfs
sdfskklsdfs
sdfskklsdfs
sdfskklsdfs
sdfskklsdfs
sdfskklsdfs
") // .style("font-size", "50px") // .append("xhtml:div") // .style("height", "100%") // .style("width", "100%") // .append("xhtml:p") // .attr("xmlns:x", "http://www.w3.org/1999/xhtml") // just provide default namespace for the following // .style("height", "100%") // .style("width", "100%") // .style("overflow", "auto") // // .style("margin", "15px") // .text("xxxx sdskd lkdjla dlajdasldja aldkja sldaldjasdddlja asdlkadadladjal dladsjalds alsdja sdlasjd lajdlas dlajd alsd xxxx sdskd lkdjla dlajdasldja aldkja sldaldjasdddlja asdlkadadladjal dladsjalds alsdja sdlasjd lajdlas dlajd alsd xxxx sdskd lkdjla dlajdasldja aldkja sldaldjasdddlja asdlkadadladjal dladsjalds alsdja sdlasjd lajdlas dlajd alsd xxxx sdskd lkdjla dlajdasldja aldkja sldaldjasdddlja asdlkadadladjal dladsjalds alsdja sdlasjd lajdlas dlajd alsd xxxx sdskd lkdjla dlajdasldja aldkja sldaldjasdddlja asdlkadadladjal dladsjalds alsdja sdlasjd lajdlas dlajd alsd xxxx sdskd lkdjla dlajdasldja aldkja sldaldjasdddlja asdlkadadladjal dladsjalds alsdja sdlasjd lajdlas dlajd alsd xxxx sdskd lkdjla dlajdasldja aldkja sldaldjasdddlja asdlkadadladjal dladsjalds alsdja sdlasjd lajdlas dlajd alsd xxxx sdskd lkdjla dlajdasldja aldkja sldaldjasdddlja asdlkadadladjal dladsjalds alsdja sdlasjd lajdlas dlajd alsd xxxx sdskd lkdjla dlajdasldja aldkja sldaldjasdddlja asdlkadadladjal dladsjalds alsdja sdlasjd lajdlas dlajd alsd") // .append("xhtml:div") //d3.timeout(function (duration) { // console.log("timer", duration); //}, 3000); // gg.transition() // .duration(500) // ; // var w, h; // [ w, h ] = doc_dim_rect (SCALE_CONDUIT.lambda, 10, 40, d.impact, SCALE_CONDUIT.orientation); // console.log (w, h); // .on("mouseover", function (d) { // var g = d3.select(this); // g.append("foreignObject") // .attr("xmlns:xhtml", "http://www.w3.org/1999/xhtml") // .attr("width", '90px') // .attr("height", '60px') // .append("xhtml:p") // .text("xxxx") // .style("background-color", "yellow") // .style("font-size", "10px") // g.attr("transform", "translate(" + ( d.x) + "," + (d.y) + ") scale(1)"); // // var t = str2transform (g.attr("transform")); // // var scale = 2 * zoom / d.impact; // // t.scale = scale; // // t.translateX -= d.impact * 30 / 4 * scale; // // t.translateY -= d.impact * 30 * SQRT2 / 4 * scale; // // console.log (t); // // g // // .transition() // // .attr("transform", "translate("+(t.translateX)+","+(t.translateY)+") scale("+(t.scale)+")") // // .duration(1000) // }) // .on("xmouseout", function (d) { // var g = d3.select(this); // var t = str2transform (g.attr("transform")); // t.scale = 1; // t.translateX = d.x; // t.translateY = d.y; // g // .transition() // .attr("transform", "translate("+(t.translateX)+","+(t.translateY)+") scale("+(t.scale)+")") // .duration(1000) // }) // var N = Math.floor ( Math.random() * 250); // var N = Math.floor ( 10 ); // data = new Array(N); // for (let i = 0; i < N; i++) { // data[i] = { x : Math.random() * 4000, y : Math.random() * 3000, // impact : Math.random(), // title : "sdksfk sdsdsd asdadas", // summary : "sdsffds sdfsf sdas asdasassd asdasd", // svg : "J7", // cpage : 0, //Math.floor(Math.random()*5), // lpage : 4, // pdf : "J7F2WE2GS-LF.pdf" // }; // } more : function (t_docs) { if (this.richness < 1) { this.richness++; this.redraw(); } }, more2go : function () { return this.richness < 1; // then we can continue }, less : function (t_docs) { if (this.richness > 0) { this.backwards[ this.richness ] (t_docs); this.richness--; } }, less2go : function () { return this.richness > 0; // then we can continue }, richness : 0, redraw : function (t_docs) { this.forwards[ this.richness ] (t_docs); }, init : function () { }, add_text : function (t_docs) { t_docs .append("text") .attr("text-anchor", "start") .attr("font-size", function(v, i) { return Math.floor(5 * v.impact) + "px" }) .each(function (d) { var lines = wordwrap(d.label, 10); d3.select(this) .append("tspan") // .attr ("dominant-baseline", "top") // .attr ("alignment-baseline", "top") .attr ("x", function(v,i) { return - v.impact * 30 / 2; }) .attr ("y", function(v,i) { return - v.impact * 20 * SQRT2 / 2; }) // .attr ("textLength", function(v,i) { return v.impact * 400 }) .text(lines[0]) ; for (var i = 1; i < lines.length; i++) { d3.select(this) .append("tspan") .attr ("x", function(v,i) { return - v.impact * 30 / 2; }) .attr("dy", "1em") .text(lines[i]) } }) ; }, remove_text : function () { L_documents .selectAll("text") .remove() ; }, add_mouseovers : function (t_docs) { t_docs .on("mouseover", function (d) { var g = d3.select(this); var t = str2transform (g.attr("transform")); var scale = 2 * zoom / d.impact; t.scale = scale; t.translateX -= d.impact * 30 / 4 * scale; t.translateY -= d.impact * 30 * SQRT2 / 4 * scale; // console.log (t); g .transition() .attr("transform", "translate("+(t.translateX)+","+(t.translateY)+") scale("+(t.scale)+")") .duration(1000) }) .on("mouseout", function (d) { var g = d3.select(this); var t = str2transform (g.attr("transform")); t.scale = 1; t.translateX = d.x; t.translateY = d.y; g .transition() .attr("transform", "translate("+(t.translateX)+","+(t.translateY)+") scale("+(t.scale)+")") .duration(1000) }) ; }, remove_mouseovers : function (t_docs) { t_docs // get rid of event handling for the document .on('mouseover', function () {}) .on('mouseout', function () {}) ; }, add_image : function (t_docs) { t_docs .append("image") .attr ("x", function(v,i) { return - v.impact * 30 / 4; }) .attr ("y", function(v,i) { return - v.impact * 30 / 4; }) .attr ("width", function(v,i) { return v.impact * 30; }) .attr ("height", function(v,i) { return v.impact * 30 * SQRT2; }) .attr ("xlink:href", function(v,i) { return v.svg + "." + v.cpage + ".svg"; }) .on('mouseover', function () { var v = d3.select (this).data()[0]; paging = { x0 : v.x - v.impact * 30 / 4, y0 : v.y - v.impact * 30 / 4, dx : v.impact * 30, pages : [], v : v }; paging.pages.push ({ svg : v.svg + "." + v.cpage + ".svg" , // current page is left-most dir : 'forward' } ); for (var p = v.cpage-1; p >= 0; p--) { // maybe some of the previous pages if (paging.pages.length < MAX_PAGES) { paging.pages.push ({ svg : v.svg + "." + p + ".svg", dir : 'backward' }); } } var r = L_paging .append("rect") .classed('paging', true) .attr ("x", function(v,i) { return paging.x0 - (paging.dx * (MAX_PAGES-1))*1.1; }) .attr ("y", function(v,i) { return paging.y0 - paging.dx * SQRT2 * 0.1; }) // .attr ("rx", '0.001') // .attr ("ry", '0.001') .attr ("width", function(v,i) { return (paging.dx * MAX_PAGES) * 1.2; }) .attr ("height", function(v,i) { return paging.dx * SQRT2 * 1.2; }) .style ('opacity', 1) // .on('dblclick', function () { // console.log ("rect dblclick"); // d3.event.stopPropagation(); // click here should not trigger a zoom event // }) .on('mouseout', function () { // console.log ("L_paging mouseout"); paging.pages = []; render_paging(); var r = d3.select (this) // .selectAll('rect') .remove(); // r.style ('opacity', 0); // r.transition() // .style ('opacity', 0) // .duration(1000) // .on ('end', function () { // this.remove(); // // this.selectAll('image').remove(); // }) // ; }) ; // r.transition() // .style ('opacity', 1) // .duration(1000) // .on ('end', function () { render_paging(); // }) // ; // L_paging // ; }) // .on('mouseout', function () { // paging.pages = []; // render_paging(); // L_paging.selectAll("rect") // .remove() // ; // }) // .on('mouseout', function () { // var g = d3.select (this.parentNode); // g.selectAll("rect") // .transition() // .attr ("x", function(v,i) { return v.x - v.impact * 30 / 4; }) // .attr ("width", function(v,i) { return v.impact * 30; }) // .duration(1000) // }) // .on('click', function () { // d3.select (this) // .transition() // .attr ("x", function(v,i) { return v.x - v.impact * 30 / 4 - v.impact * 30; }) // move left // .duration(1000) ; }, remove_image : function (t_docs) { t_docs .selectAll("image") .remove() ; }, forwards : [ function (t_docs) { t_docs .append("a") .attr ("xlink:href", function(v,i) { return "/documents/" + v.id + ".pdf"; } ) .attr ("xlink:show", "new") .append("rect") .attr ("x", -5) .attr ("y", -5) .attr ("width", 10) .attr ("height", 10) .classed('document-5', true) .append("svg:title") // not quite correct position, but it seems to work .text(function(v,i) { return v.label; }) ; }, function (t_docs) { // documents_transition_density_to_summary L_documents .selectAll("rect") .transition() .attr ("x", function(v,i) { return - v.impact * 40 / 2; }) .attr ("y", function(v,i) { return - v.impact * 40 / 2; }) .attr ("width", function(v,i) { return v.impact * 40; }) .attr ("height", function(v,i) { return v.impact * 40 * SQRT2; }) .duration(1000); Conduit_PerlDistros.add_text(t_docs); Conduit_PerlDistros.add_mouseovers (t_docs); }, function (t_docs) { // documents_transition_summary_to_embedded Conduit_PerlDistros.remove_text (t_docs); Conduit_PerlDistros.add_image (t_docs); }, ], backwards : [ function (t_docs) {}, // identity function (t_docs) { Conduit_PerlDistros.remove_text (t_docs); Conduit_PerlDistros.remove_mouseovers (t_docs); L_documents .selectAll("rect") .transition() .attr ("x", 0) .attr ("y", 0) .attr ("width", function(v,i) { return 10; }) .attr ("height", function(v,i) { return 10; }) .duration(1000) }, function (t_docs) { Conduit_PerlDistros.remove_image (t_docs); Conduit_PerlDistros.add_text (t_docs); Conduit_PerlDistros.add_mouseovers (t_docs); }, ], function ending_working_old () { var transform = d3.event.transform; // console.log ("ending", transform); var zoom2 = zoom / transform.k; zoomLevel = zoom2level (zoom2); // console.log ("zoomLevel", zoomLevel, zoom2, pyramid[zoomLevel].z); // console.log ("vp ->", vp0); var vp = { x : vp0.x - transform.x * zoom2, y : vp0.y - transform.y * zoom2, dx : width * zoom2, dy : height * zoom2}; // console.log ("-> vp", vp); // provide_tiling_sync (vp, HALO_SIZE, zoomLevel, zoom2); // tiling, this time with halo, same level provide_tiling_async (vp, HALO_SIZE, zoomLevel, zoom2, refine); } // d3.select( '#xxx-documents-toggle-button').on ('click', function () { // click on the button // if (d3.select(this).classed('mdl-button--colored')) { // it is active // if (d3.select(this).select('i').classed("md-light")) { // active, off => turn on // d3.select(this).select('i').classed("md-light", false); // switch on button // d3.select("#document-control").selectAll("i.material-icons").classed("md-light", false); // activate all arrows // // if (! DOCUMENT_CONDUIT.more2go()) { // // d3.select('#document-display-more-button').select('i').classed("md-light", true); // // } // // if (! DOCUMENT_CONDUIT.less2go()) { // // d3.select('#document-display-less-button').select('i').classed("md-light", true); // // } // if (! SCALE_CONDUIT.more2go()) { // d3.select('#document-scale-more-button').select('i').classed("md-light", true); // } // if (! SCALE_CONDUIT.less2go()) { // d3.select('#document-scale-less-button').select('i').classed("md-light", true); // } // var nr_documents = Math.floor (NR_DOCUMENTS / 100 * percentage_documents); // how many do I need // // console.log("DOCS "+DOCUMENTS.length, "NEED "+nr_documents); // if (DOCUMENTS.length < nr_documents) { // not all needed were loaded // d3.select('#document-control').style("filter", "url(#button-blur)"); // d3.select('#documents-toggle-button').classed("mdl-button--colored", false); // signal that button is disabled // promise_doc_fetch_and_render (0, nr_documents); // then initate loading, and eventually rendering // // this will only be done ONCE, and that is good so => NOT TRUE // } else { // we have all we need // // documents = DOCUMENTS.slice(0, nr_documents); // // SCALE_CONDUIT.redraw (documents.filter( is_doc_visible ) ); // we render what we have and what we see // // SCALE_CONDUIT.redraw (DOCUMENTS.slice(0, nr_documents)); // SCALE_CONDUIT.redraw (DOCUMENTS); // } // } else { // button active, on => turn off // d3.select(this).select('i').classed("md-light", true); // switch off button // d3.select("#document-control").selectAll("i.material-icons").classed("md-light", true); // deactivate all arrows // // unrender_paging (); // SCALE_CONDUIT.redraw ([]); // } // } else { // inactive => ignore // } // }); // d3.select ('#document-display-more-button').on ('click', function () { // if (d3.select ('#documents-toggle-button').select('i').classed('md-light')) { // documents disabled // return; // } else { // d3.select('#document-display-less-button').select('i').classed("md-light", false); // DOCUMENT_CONDUIT.more( L_documents.selectAll("g") ); // if (! DOCUMENT_CONDUIT.more2go()) { // d3.select(this).select('i').classed("md-light", true); // } // } // }); // d3.select ('#document-display-less-button').on ('click', function () { // if (d3.select ('#documents-toggle-button').select('i').classed('md-light')) { // documents disabled // return; // } else { // d3.select('#document-display-more-button').select('i').classed("md-light", false); // DOCUMENT_CONDUIT.less( L_documents.selectAll("g") ); // if (! DOCUMENT_CONDUIT.less2go()) { // d3.select(this).select('i').classed("md-light", true); // } // } // }); // d3.select('#islands-toggle-button').classed("mdl-button--colored", true); // signal that button is active // d3.select('#islands-control').selectAll('i').classed('md-light', false); // var isvg = d3.select('#islands-toggle-button') // .append('svg'); // isvg.append("clipPath") // .attr("id", "islands-button-clip") // .append("rect") // .attr("x",0) // .attr("y", FILL_LEVELS3[ current_islands + 1 ]) // .attr("height", 28) // .attr("width", 28) // ; // isvg.append("circle") // .attr("clip-path","url(#islands-button-clip)") // .attr("cx", 14) // .attr("cy", 14) // .attr("r", 14) // .attr("fill","SteelBlue") // ; // d3.select ('#islands-toggle-button').on ('click', function () { // if (d3.select(this).select('i').classed('md-light')) { // render_islands (ISLANDS, islands_richness, current_islands); // d3.select(this).select('i').text ('label'); // d3.select(this).select('i').classed("md-light", false) // d3.select("#islands-control").selectAll("i.material-icons").classed("md-light", false); // activate all buttons // if (current_islands >= MAX_ISLANDS - 1) { // d3.select('#islands-more-button').select('i').classed("md-light", true); // } else if (current_islands == 0) { // d3.select('#islands-less-button').select('i').classed("md-light", true); // } // if (islands_richness[0] == 0 && islands_richness[1] == 0) { // d3.select('#islands-display-less-button').select('i').classed("md-light", true); // } else if (islands_richness[0] == 1 && islands_richness[1] == 2) { // d3.select('#islands-display-more-button').select('i').classed("md-light", false); // } // } else { // render_islands (ISLANDS, [0, 0], current_islands); // d3.select(this).select('i').text ('label_outline'); // d3.select(this).select('i').classed("md-light", true) // d3.select("#islands-control").selectAll("i.material-icons").classed("md-light", true); // deactivate all buttons // } // }); // d3.select ('#islands-display-less-button').on ('click', function () { // if (d3.select ('#islands-toggle-button').select('i').classed('md-light')) { // islands disabled // } else if (d3.select ('#islands-display-less-button').select('i').classed('md-light')) { // islands up disabled // } else { // if (islands_richness[0] == 1 && islands_richness[1] == 0) { // islands_richness = [0, 0]; // remove labels // d3.select(this).select('i').classed("md-light", true); // } else if (islands_richness[0] == 1 && islands_richness[1] == 1) { // islands_richness = [1, 0]; // remove lines // } else if (islands_richness[0] == 1 && islands_richness[1] == 2) { // islands_richness = [1, 1]; // remove blotches // } else if (islands_richness[0] == 1 && islands_richness[1] == 3) { // islands_richness = [1, 2]; // remove blotches, blurred // d3.select('#islands-display-more-button').select('i').classed("md-light", false); // } else { // no more decrement // } // render_islands (ISLANDS, islands_richness, current_islands) // } // }); // d3.select ('#islands-display-more-button').on ('click', function () { // if (d3.select ('#islands-toggle-button').select('i').classed('md-light')) { // islands disabled // } else if (d3.select ('#islands-display-more-button').select('i').classed('md-light')) { // islands up disabled // } else { // if (islands_richness[0] == 0 && islands_richness[0] == 0) { // islands_richness = [1, 0]; // add labels // d3.select('#islands-display-less-button').select('i').classed("md-light", false); // } else if (islands_richness[0] == 1 && islands_richness[1] == 0) { // islands_richness = [1, 1]; // add lines // } else if (islands_richness[0] == 1 && islands_richness[1] == 1) { // islands_richness = [1, 2]; // add blotches // } else if (islands_richness[0] == 1 && islands_richness[1] == 2) { // islands_richness = [1, 3]; // add blotches, blurred // d3.select(this).select('i').classed("md-light", true); // } else { // no more increment // } // render_islands (ISLANDS, islands_richness, current_islands); // } // }); // d3.select ('#islands-more-button').on ('click', function () { // if (d3.select ('#islands-toggle-button').select('i').classed('md-light')) { // islands disabled // } else if (d3.select ('#islands-more-button').select('i').classed('md-light')) { // islands up disabled // } else { // d3.select('#islands-less-button').select('i').classed("md-light", false); // current_islands++; // try to increment // if (current_islands >= MAX_ISLANDS - 1) { // d3.select(this).select('i').classed("md-light", true); // } // if (ISLANDS[current_islands]) { // already loaded // render_islands (ISLANDS, islands_richness, current_islands); // d3.select('#islands-button-clip').select('rect') // .attr("y", FILL_LEVELS3[ current_islands + 1 ]); // } else { // d3.json("islands/"+current_islands, { // headers: { // 'Accept': 'application/json' // }}) // from there // .then(function(data) { // into here // ISLANDS[current_islands] = data; // render_islands (ISLANDS, islands_richness, current_islands); // d3.select('#islands-button-clip').select('rect') // .attr("y", FILL_LEVELS3[ current_islands + 1 ]); // }); // } // } // }); // d3.select ('#islands-less-button').on ('click', function () { // if (d3.select ('#islands-toggle-button').select('i').classed('md-light')) { // islands disabled // } else if (d3.select ('#islands-less-button').select('i').classed('md-light')) { // islands down disabled // } else { // d3.select('#islands-more-button').select('i').classed("md-light", false); // render_islands (ISLANDS, [0, 0], current_islands); // current_islands--; // try to decrement // if (current_islands <= 0) { // current_islands = 0; // d3.select(this).select('i').classed("md-light", true); // } else { // } // render_islands (ISLANDS, islands_richness, current_islands); // d3.select('#islands-button-clip').select('rect') // .attr("y", FILL_LEVELS3[ current_islands + 1 ]); // } // });