jeremystretch 4 лет назад
Родитель
Сommit
17ba0a97d5

+ 0 - 1
netbox/project-static/bundle.js

@@ -40,7 +40,6 @@ async function bundleGraphIQL() {
 async function bundleNetBox() {
   const entryPoints = {
     netbox: 'src/index.ts',
-    jobs: 'src/jobs.ts',
     lldp: 'src/device/lldp.ts',
     config: 'src/device/config.ts',
     status: 'src/device/status.ts',

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
netbox/project-static/dist/jobs.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 2
netbox/project-static/dist/jobs.js.map


+ 0 - 32
netbox/project-static/src/global.d.ts

@@ -98,38 +98,6 @@ type APISecret = {
   url: string;
 };
 
-type JobResultLog = {
-  message: string;
-  status: 'success' | 'warning' | 'danger' | 'info';
-};
-
-type JobStatus = {
-  label: string;
-  value: 'completed' | 'failed' | 'errored' | 'running';
-};
-
-type APIJobResult = {
-  completed: string;
-  created: string;
-  data: {
-    log: JobResultLog[];
-    output: string;
-  };
-  display: string;
-  id: number;
-  job_id: string;
-  name: string;
-  obj_type: string;
-  status: JobStatus;
-  url: string;
-  user: {
-    display: string;
-    username: string;
-    id: number;
-    url: string;
-  };
-};
-
 type APIUserConfig = {
   tables: { [k: string]: { columns: string[]; available_columns: string[] } };
   [k: string]: unknown;

+ 0 - 104
netbox/project-static/src/jobs.ts

@@ -1,104 +0,0 @@
-import { createToast } from './bs';
-import { apiGetBase, hasError, getNetboxData } from './util';
-
-let timeout: number = 1000;
-
-interface JobInfo {
-  url: Nullable<string>;
-  complete: boolean;
-}
-
-/**
- * Mimic the behavior of setTimeout() in an async function.
- */
-function asyncTimeout(ms: number) {
-  return new Promise(resolve => setTimeout(resolve, ms));
-}
-
-/**
- * Job ID & Completion state are only from Django context, which can only be used from the HTML
- * template. Hidden elements are present in the template to provide access to these values from
- * JavaScript.
- */
-function getJobInfo(): JobInfo {
-  let complete = false;
-
-  // Determine the API URL for the job status
-  const url = getNetboxData('data-job-url');
-
-  // Determine the job completion status, if present. If the job is not complete, the value will be
-  // "None". Otherwise, it will be a stringified date.
-  const jobComplete = getNetboxData('data-job-complete');
-  if (typeof jobComplete === 'string' && jobComplete.toLowerCase() !== 'none') {
-    complete = true;
-  }
-  return { url, complete };
-}
-
-/**
- * Update the job status label element based on the API response.
- */
-function updateLabel(status: JobStatus) {
-  const element = document.querySelector<HTMLSpanElement>('#pending-result-label > span.badge');
-  if (element !== null) {
-    let labelClass = 'secondary';
-    switch (status.value) {
-      case 'failed' || 'errored':
-        labelClass = 'danger';
-        break;
-      case 'running':
-        labelClass = 'warning';
-        break;
-      case 'completed':
-        labelClass = 'success';
-        break;
-    }
-    element.setAttribute('class', `badge bg-${labelClass}`);
-    element.innerText = status.label;
-  }
-}
-
-/**
- * Recursively check the job's status.
- * @param url API URL for job result
- */
-async function checkJobStatus(url: string) {
-  const res = await apiGetBase<APIJobResult>(url);
-  if (hasError(res)) {
-    // If the response is an API error, display an error message and stop checking for job status.
-    const toast = createToast('danger', 'Error', res.error);
-    toast.show();
-    return;
-  } else {
-    // Update the job status label.
-    updateLabel(res.status);
-
-    // If the job is complete, reload the page.
-    if (['completed', 'failed', 'errored'].includes(res.status.value)) {
-      location.reload();
-      return;
-    } else {
-      // Otherwise, keep checking the job's status, backing off 1 second each time, until a 10
-      // second interval is reached.
-      if (timeout < 10000) {
-        timeout += 1000;
-      }
-      await Promise.all([checkJobStatus(url), asyncTimeout(timeout)]);
-    }
-  }
-}
-
-function initJobs() {
-  const { url, complete } = getJobInfo();
-
-  if (url !== null && !complete) {
-    // If there is a job ID and it is not completed, check for the job's status.
-    Promise.resolve(checkJobStatus(url));
-  }
-}
-
-if (document.readyState !== 'loading') {
-  initJobs();
-} else {
-  document.addEventListener('DOMContentLoaded', initJobs);
-}

Некоторые файлы не были показаны из-за большого количества измененных файлов