mirror of
https://github.com/chanzuckerberg/cellxgene.git
synced 2026-09-27 12:18:11 +08:00
Prettier
This commit is contained in:
+44
-41
@@ -1,70 +1,73 @@
|
||||
var createCamera = require('orbit-camera')
|
||||
var createScroll = require('scroll-speed')
|
||||
var mp = require('mouse-position')
|
||||
var mb = require('mouse-pressed')
|
||||
var key = require('key-pressed')
|
||||
// jshint esversion: 6
|
||||
var createCamera = require("orbit-camera");
|
||||
var createScroll = require("scroll-speed");
|
||||
var mp = require("mouse-position");
|
||||
var mb = require("mouse-pressed");
|
||||
var key = require("key-pressed");
|
||||
|
||||
const panSpeed = 0.4
|
||||
const scaleSpeed = 0.5
|
||||
const scaleMax = 3
|
||||
const panSpeed = 0.4;
|
||||
const scaleSpeed = 0.5;
|
||||
const scaleMax = 3;
|
||||
// const scaleMin = 1.15
|
||||
const scaleMin = 1.03
|
||||
const scaleMin = 1.03;
|
||||
|
||||
function attachCamera(canvas, opts) {
|
||||
opts = opts || {}
|
||||
opts.pan = opts.pan !== false
|
||||
opts.scale = opts.scale !== false
|
||||
opts.rotate = opts.rotate !== false
|
||||
opts = opts || {};
|
||||
opts.pan = opts.pan !== false;
|
||||
opts.scale = opts.scale !== false;
|
||||
opts.rotate = opts.rotate !== false;
|
||||
|
||||
var scroll = createScroll(canvas, opts.scale)
|
||||
var mbut = mb(canvas, opts.rotate)
|
||||
var mpos = mp(canvas)
|
||||
var camera = createCamera(
|
||||
[0, 0, 1]
|
||||
, [0, 0, -1]
|
||||
, [0, 1, 0]
|
||||
)
|
||||
var scroll = createScroll(canvas, opts.scale);
|
||||
var mbut = mb(canvas, opts.rotate);
|
||||
var mpos = mp(canvas);
|
||||
var camera = createCamera([0, 0, 1], [0, 0, -1], [0, 1, 0]);
|
||||
|
||||
camera.tick = tick
|
||||
camera.tick = tick;
|
||||
|
||||
return camera
|
||||
return camera;
|
||||
|
||||
function tick() {
|
||||
var ctrl = key('<control>') || key('<alt>')
|
||||
var alt = key('<shift>')
|
||||
var height = canvas.height
|
||||
var width = canvas.width
|
||||
var ctrl = key("<control>") || key("<alt>");
|
||||
var alt = key("<shift>");
|
||||
var height = canvas.height;
|
||||
var width = canvas.width;
|
||||
|
||||
if (opts.rotate && mbut.left && ctrl && !alt) {
|
||||
camera.rotate(
|
||||
[ mpos.x / width - 0.5, mpos.y / height - 0.5 ]
|
||||
, [ mpos.prevX / width - 0.5, mpos.prevY / height - 0.5 ]
|
||||
)
|
||||
[mpos.x / width - 0.5, mpos.y / height - 0.5],
|
||||
[mpos.prevX / width - 0.5, mpos.prevY / height - 0.5]
|
||||
);
|
||||
}
|
||||
|
||||
if (opts.pan && mbut.right || (mbut.left && !ctrl && !alt)) {
|
||||
if ((opts.pan && mbut.right) || (mbut.left && !ctrl && !alt)) {
|
||||
camera.pan([
|
||||
(panSpeed * (mpos[0] - mpos.prev[0]) / width) * Math.pow(camera.distance, 1)
|
||||
, (panSpeed * (mpos[1] - mpos.prev[1]) / height) * Math.pow(camera.distance, 1)
|
||||
])
|
||||
panSpeed *
|
||||
(mpos[0] - mpos.prev[0]) /
|
||||
width *
|
||||
Math.pow(camera.distance, 1),
|
||||
panSpeed *
|
||||
(mpos[1] - mpos.prev[1]) /
|
||||
height *
|
||||
Math.pow(camera.distance, 1)
|
||||
]);
|
||||
}
|
||||
|
||||
if (opts.scale && scroll[1]) {
|
||||
camera.distance *= Math.exp(scroll[1] * scaleSpeed / height)
|
||||
camera.distance *= Math.exp(scroll[1] * scaleSpeed / height);
|
||||
}
|
||||
|
||||
if (opts.scale && (mbut.middle || (mbut.left && !ctrl && alt))) {
|
||||
var d = (mpos.y - mpos.prevY)
|
||||
var d = mpos.y - mpos.prevY;
|
||||
if (!d) return;
|
||||
|
||||
camera.distance *= Math.exp(d / height)
|
||||
camera.distance *= Math.exp(d / height);
|
||||
}
|
||||
|
||||
if (camera.distance > scaleMax) camera.distance = scaleMax
|
||||
if (camera.distance < scaleMin) camera.distance = scaleMin
|
||||
if (camera.distance > scaleMax) camera.distance = scaleMax;
|
||||
if (camera.distance < scaleMin) camera.distance = scaleMin;
|
||||
|
||||
scroll.flush()
|
||||
mpos.flush()
|
||||
scroll.flush();
|
||||
mpos.flush();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
import {scaleRGB} from "./scaleRGB";
|
||||
// jshint esversion: 6
|
||||
import { scaleRGB } from "./scaleRGB";
|
||||
|
||||
export const parseRGB = (c) => {
|
||||
export const parseRGB = c => {
|
||||
if (c[0] !== "#") {
|
||||
const _c = c.replace(/[^\d,.]/g, '').split(',');
|
||||
return [
|
||||
scaleRGB(+_c[0]),
|
||||
scaleRGB(+_c[1]),
|
||||
scaleRGB(+_c[2])
|
||||
];
|
||||
const _c = c.replace(/[^\d,.]/g, "").split(",");
|
||||
return [scaleRGB(+_c[0]), scaleRGB(+_c[1]), scaleRGB(+_c[2])];
|
||||
} else {
|
||||
var parsedHex = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(c);
|
||||
return [
|
||||
|
||||
+18
-14
@@ -1,14 +1,15 @@
|
||||
// jshint esversion: 6
|
||||
/*****************************************
|
||||
******************************************
|
||||
Render Queue via http://bl.ocks.org/syntagmatic/raw/3341641/render-queue.js
|
||||
******************************************
|
||||
******************************************/
|
||||
|
||||
const renderQueue = (function(callback1234) {
|
||||
var _queue = [], // data to be rendered
|
||||
_rate = 300, // number of calls per frame
|
||||
_invalidate = function() {}, // invalidate last render queue
|
||||
_clear = function() {}; // clearing function
|
||||
const renderQueue = function(callback1234) {
|
||||
var _queue = [], // data to be rendered
|
||||
_rate = 300, // number of calls per frame
|
||||
_invalidate = function() {}, // invalidate last render queue
|
||||
_clear = function() {}; // clearing function
|
||||
|
||||
var rq = function(ARRAY_FROM_CELLXGENE) {
|
||||
if (ARRAY_FROM_CELLXGENE) rq.data(ARRAY_FROM_CELLXGENE);
|
||||
@@ -25,7 +26,7 @@ const renderQueue = (function(callback1234) {
|
||||
|
||||
function doFrame() {
|
||||
if (!valid) return true;
|
||||
var chunk = _queue.splice(0,_rate);
|
||||
var chunk = _queue.splice(0, _rate);
|
||||
chunk.map(callback1234);
|
||||
timer_frame(doFrame);
|
||||
}
|
||||
@@ -35,7 +36,7 @@ const renderQueue = (function(callback1234) {
|
||||
|
||||
rq.data = function(ARRAY_FROM_CELLXGENE) {
|
||||
_invalidate();
|
||||
_queue = ARRAY_FROM_CELLXGENE.slice(0); // creates a copy of the data
|
||||
_queue = ARRAY_FROM_CELLXGENE.slice(0); // creates a copy of the data
|
||||
return rq;
|
||||
};
|
||||
|
||||
@@ -65,14 +66,17 @@ const renderQueue = (function(callback1234) {
|
||||
|
||||
rq.invalidate = _invalidate;
|
||||
|
||||
var timer_frame = window.requestAnimationFrame
|
||||
|| window.webkitRequestAnimationFrame
|
||||
|| window.mozRequestAnimationFrame
|
||||
|| window.oRequestAnimationFrame
|
||||
|| window.msRequestAnimationFrame
|
||||
|| function(callback) { setTimeout(callback, 17); };
|
||||
var timer_frame =
|
||||
window.requestAnimationFrame ||
|
||||
window.webkitRequestAnimationFrame ||
|
||||
window.mozRequestAnimationFrame ||
|
||||
window.oRequestAnimationFrame ||
|
||||
window.msRequestAnimationFrame ||
|
||||
function(callback) {
|
||||
setTimeout(callback, 17);
|
||||
};
|
||||
|
||||
return rq;
|
||||
});
|
||||
};
|
||||
|
||||
export default renderQueue;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
export const scaleRGB = (input) => {
|
||||
// jshint esversion: 6
|
||||
export const scaleRGB = input => {
|
||||
const outputMax = 1;
|
||||
const outputMin = 0;
|
||||
|
||||
@@ -7,4 +8,4 @@ export const scaleRGB = (input) => {
|
||||
|
||||
const percent = (input - inputMin) / (inputMax - inputMin);
|
||||
return percent * (outputMax - outputMin) + outputMin;
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user