@jbrowse/core
Version:
JBrowse 2 core libraries used by plugins
25 lines (24 loc) • 1.2 kB
JavaScript
import RpcMethodType from "../../pluggableElementTypes/RpcMethodType.js";
import { renameRegionsIfNeeded } from "../../util/index.js";
export default class CoreGetFeatureDetails extends RpcMethodType {
name = 'CoreGetFeatureDetails';
async serializeArguments(args, rpcDriver) {
const { rootModel } = this.pluginManager;
const assemblyManager = rootModel.session.assemblyManager;
const renamedArgs = await renameRegionsIfNeeded(assemblyManager, args);
const superArgs = (await super.serializeArguments(renamedArgs, rpcDriver));
const { rendererType } = args;
const RendererType = this.pluginManager.getRendererType(rendererType);
return RendererType.serializeArgsInClient(superArgs);
}
async execute(args, rpcDriver) {
const deserializedArgs = await this.deserializeArguments(args, rpcDriver);
const { rendererType, featureId } = deserializedArgs;
const RendererType = this.pluginManager.getRendererType(rendererType);
return {
feature: RendererType.getLayoutSession(args)
?.cachedLayout.layout.getDataByID(featureId)
?.toJSON(),
};
}
}