本文整理匯總了TypeScript中@jupyterlab/coreutils.URLExt.objectToQueryString方法的典型用法代碼示例。如果您正苦於以下問題:TypeScript URLExt.objectToQueryString方法的具體用法?TypeScript URLExt.objectToQueryString怎麽用?TypeScript URLExt.objectToQueryString使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類@jupyterlab/coreutils.URLExt
的用法示例。
在下文中一共展示了URLExt.objectToQueryString方法的8個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。
示例1:
execute: (args: IRouter.ILocation) => {
const { hash, path, search } = args;
const query = URLExt.queryStringToObject(search || '');
const reset = 'reset' in query;
if (!reset) {
return;
}
// If the state database has already been resolved, resetting is
// impossible without reloading.
if (resolved) {
return document.location.reload();
}
// Empty the state database.
resolved = true;
transform.resolve({ type: 'clear', contents: null });
// Maintain the query string parameters but remove `reset`.
delete query['reset'];
const url = path + URLExt.objectToQueryString(query) + hash;
const cleared = commands.execute(CommandIDs.recoverState)
.then(() => router.stop); // Stop routing before new route navigation.
// After the state has been reset, navigate to the URL.
cleared.then(() => { router.navigate(url, { silent: true }); });
return cleared;
}
示例2: it
it('should return a serialized object string suitable for a query', () => {
const obj = {
name: 'foo',
id: 'baz'
};
expect(URLExt.objectToQueryString(obj)).to.equal('?name=foo&id=baz');
});
示例3: async
activate: async (
_: JupyterFrontEnd,
paths: JupyterFrontEnd.IPaths,
router: IRouter
) => {
const { hash, path, search } = router.current;
const query = URLExt.queryStringToObject(search || '');
const solver = new WindowResolver();
const match = path.match(new RegExp(`^${paths.urls.workspaces}([^?\/]+)`));
const workspace = (match && decodeURIComponent(match[1])) || '';
const candidate = Private.candidate(paths, workspace);
try {
await solver.resolve(candidate);
} catch (error) {
// Window resolution has failed so the URL must change. Return a promise
// that never resolves to prevent the application from loading plugins
// that rely on `IWindowResolver`.
return new Promise<IWindowResolver>(() => {
// If the user has requested workspace resolution create a new one.
if (WORKSPACE_RESOLVE in query) {
const { base, workspaces } = paths.urls;
const pool =
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
const random = pool[Math.floor(Math.random() * pool.length)];
const path = URLExt.join(base, workspaces, `auto-${random}`);
// Clone the originally requested workspace after redirecting.
query['clone'] = workspace;
// Change the URL and trigger a hard reload to re-route.
const url = path + URLExt.objectToQueryString(query) + (hash || '');
router.navigate(url, { hard: true, silent: true });
return;
}
// Launch a dialog to ask the user for a new workspace name.
console.warn('Window resolution failed:', error);
return Private.redirect(router, paths, workspace);
});
}
// If the user has requested workspace resolution remove the query param.
if (WORKSPACE_RESOLVE in query) {
delete query[WORKSPACE_RESOLVE];
// Silently scrub the URL.
const url = path + URLExt.objectToQueryString(query) + (hash || '');
router.navigate(url, { silent: true });
}
return solver;
}
示例4:
return new Promise<IWindowResolver>(() => {
const { base, workspaces } = paths.urls;
const pool =
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
const random = pool[Math.floor(Math.random() * pool.length)];
const path = URLExt.join(base, workspaces, `auto-${random}`) + rest;
// Clone the originally requested workspace after redirecting.
query['clone'] = workspace;
// Change the URL and trigger a hard reload to re-route.
const url = path + URLExt.objectToQueryString(query) + (hash || '');
router.navigate(url, { hard: true, silent: true });
});
示例5: DisposableDelegate
execute: (args: IRouter.ILocation) => {
const { hash, path, search } = args;
const query = URLExt.queryStringToObject(search || '');
const reset = 'reset' in query;
const clone = 'clone' in query;
if (!reset) {
return;
}
// If a splash provider exists, launch the splash screen.
const loading = splash
? splash.show()
: new DisposableDelegate(() => undefined);
// If the state database has already been resolved, resetting is
// impossible without reloading.
if (resolved) {
return router.reload();
}
// Empty the state database.
resolved = true;
transform.resolve({ type: 'clear', contents: null });
// Maintain the query string parameters but remove `reset`.
delete query['reset'];
const silent = true;
const hard = true;
const url = path + URLExt.objectToQueryString(query) + hash;
const cleared = commands
.execute(CommandIDs.recoverState)
.then(() => router.stop); // Stop routing before new route navigation.
// After the state has been reset, navigate to the URL.
if (clone) {
void cleared.then(() => {
router.navigate(url, { silent, hard });
});
} else {
void cleared.then(() => {
router.navigate(url, { silent });
loading.dispose();
});
}
return cleared;
}
示例6:
}).then(() => {
const immediate = true;
if (source === clone) {
// Maintain the query string parameters but remove `clone`.
delete query['clone'];
const url = path + URLExt.objectToQueryString(query) + hash;
const cloned = commands.execute(CommandIDs.saveState, { immediate })
.then(() => router.stop);
// After the state has been cloned, navigate to the URL.
cloned.then(() => { router.navigate(url, { silent: true }); });
return cloned;
}
// After the state database has finished loading, save it.
return commands.execute(CommandIDs.saveState, { immediate });
});
示例7:
return new Promise<IWindowResolver>(() => {
// If the user has requested workspace resolution create a new one.
if (WORKSPACE_RESOLVE in query) {
const { base, workspaces } = paths.urls;
const pool =
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
const random = pool[Math.floor(Math.random() * pool.length)];
const path = URLExt.join(base, workspaces, `auto-${random}`);
// Clone the originally requested workspace after redirecting.
query['clone'] = workspace;
// Change the URL and trigger a hard reload to re-route.
const url = path + URLExt.objectToQueryString(query) + (hash || '');
router.navigate(url, { hard: true, silent: true });
return;
}
// Launch a dialog to ask the user for a new workspace name.
console.warn('Window resolution failed:', error);
return Private.redirect(router, paths, workspace);
});
示例8: async
execute: async (args: IRouter.ILocation) => {
// Since the command can be executed an arbitrary number of times, make
// sure it is safe to call multiple times.
if (resolved) {
return;
}
const { hash, path, search } = args;
const { defaultWorkspace, workspace } = app.info;
const query = URLExt.queryStringToObject(search || '');
const clone =
typeof query['clone'] === 'string'
? query['clone'] === ''
? defaultWorkspace
: URLExt.join(
PageConfig.getOption('baseUrl'),
PageConfig.getOption('workspacesUrl'),
query['clone']
)
: null;
const source = clone || workspace;
try {
const saved = await workspaces.fetch(source);
// If this command is called after a reset, the state database
// will already be resolved.
if (!resolved) {
resolved = true;
transform.resolve({ type: 'overwrite', contents: saved.data });
}
} catch (error) {
console.warn(`Fetching workspace (${workspace}) failed:`, error);
// If the workspace does not exist, cancel the data transformation
// and save a workspace with the current user state data.
if (!resolved) {
resolved = true;
transform.resolve({ type: 'cancel', contents: null });
}
}
// Any time the local state database changes, save the workspace.
if (workspace) {
state.changed.connect(
listener,
state
);
}
const immediate = true;
if (source === clone) {
// Maintain the query string parameters but remove `clone`.
delete query['clone'];
const url = path + URLExt.objectToQueryString(query) + hash;
const cloned = commands
.execute(CommandIDs.saveState, { immediate })
.then(() => router.stop);
// After the state has been cloned, navigate to the URL.
cloned.then(() => {
console.log(`HERE: ${url}`);
router.navigate(url, { silent: true });
});
return cloned;
}
// After the state database has finished loading, save it.
return commands.execute(CommandIDs.saveState, { immediate });
}