diff --git a/.codespellignorelines b/.codespellignorelines
index 4b0179fdc9737..1234698be3071 100644
--- a/.codespellignorelines
+++ b/.codespellignorelines
@@ -3,3 +3,4 @@
roles = relationship("Role", secondary=assoc_user_role, backref="user", lazy="selectin")
The platform supports **C**reate, **R**ead, **U**pdate, and **D**elete operations on most resources.
Code block\ndoes not\nrespect\nnewlines\n
+ "trough",
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index f1ad6949ea737..d37e0cbb8eeb7 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -641,7 +641,7 @@ repos:
language: node
files: ^airflow/www/.*\.(css|sass|scss)$
# Keep dependency versions in sync w/ airflow/www/package.json
- additional_dependencies: ['stylelint@13.3.1', 'stylelint-config-standard@20.0.0']
+ additional_dependencies: ['stylelint@13.3.1', 'stylelint-config-standard@20.0.0', 'stylelint-config-prettier@9.0.5']
- id: compile-www-assets
name: Compile www assets
language: node
@@ -877,10 +877,10 @@ repos:
additional_dependencies: ['rich>=12.4.4']
pass_filenames: false
files: ^tests/.*\.py$
- - id: ts-compile-and-lint-javascript
- name: TS types generation and ESLint against current UI files
+ - id: ts-compile-format-lint-www
+ name: TS types generation and ESLint/Prettier against current UI files
language: node
- 'types_or': [javascript, ts, tsx, yaml]
+ 'types_or': [javascript, ts, tsx, yaml, css, json]
files: ^airflow/www/static/js/|^airflow/api_connexion/openapi/v1\.yaml$
entry: ./scripts/ci/pre_commit/pre_commit_www_lint.py
additional_dependencies: ['yarn@1.22.19']
diff --git a/.rat-excludes b/.rat-excludes
index 138e8a0787a0c..0b360664d822f 100644
--- a/.rat-excludes
+++ b/.rat-excludes
@@ -13,8 +13,10 @@
.coveragerc
.codecov.yml
.codespellignorelines
-.eslintrc
.eslintignore
+.eslintrc
+.prettierignore
+.prettierrc
.rat-excludes
.stylelintignore
.stylelintrc
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index ab32efb178b80..e5d989f61f19d 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -1179,29 +1179,32 @@ commands:
yarn run dev
-Follow JavaScript Style Guide
------------------------------
+Follow Style Guide
+------------------
-We try to enforce a more consistent style and follow the JS community
+We try to enforce a more consistent style and follow the Javascript/Typescript community
guidelines.
-Once you add or modify any JavaScript code in the project, please make sure it
+Once you add or modify any JS/TS code in the project, please make sure it
follows the guidelines defined in `Airbnb
JavaScript Style Guide `__.
Apache Airflow uses `ESLint `__ as a tool for identifying and
-reporting on patterns in JavaScript. To use it, run any of the following
-commands:
+reporting issues in JS/TS, and `Prettier `__ for code formatting.
+Most IDE directly integrate with these tools, you can also manually run them with any of the following commands:
.. code-block:: bash
- # Check JS code in .js, .jsx, and .html files, and report any errors/warnings
+ # Format code in .js, .jsx, .ts, .tsx, .json, .css, .html files
+ yarn format
+
+ # Check JS/TS code in .js, .jsx, .ts, .tsx, .html files and report any errors/warnings
yarn run lint
- # Check JS code in .js, .jsx, and .html files, report any errors/warnings and fix them if possible
+ # Check JS/TS code in .js, .jsx, .ts, .tsx, .html files and report any errors/warnings and fix them if possible
yarn run lint:fix
- # Runs tests for all .test.js and .test.jsx files
+ # Run tests for all .test.js, .test.jsx, .test.ts, test.tsx files
yarn test
React, JSX and Chakra
diff --git a/STATIC_CODE_CHECKS.rst b/STATIC_CODE_CHECKS.rst
index 814889782cc5e..65808784f3f6c 100644
--- a/STATIC_CODE_CHECKS.rst
+++ b/STATIC_CODE_CHECKS.rst
@@ -305,7 +305,7 @@ require Breeze Docker image to be build locally.
+-----------------------------------------------------------+------------------------------------------------------------------+---------+
| trailing-whitespace | Remove trailing whitespace at end of line | |
+-----------------------------------------------------------+------------------------------------------------------------------+---------+
-| ts-compile-and-lint-javascript | TS types generation and ESLint against current UI files | |
+| ts-compile-format-lint-www | TS types generation and ESLint/Prettier against current UI files | |
+-----------------------------------------------------------+------------------------------------------------------------------+---------+
| update-black-version | Update black versions everywhere | |
+-----------------------------------------------------------+------------------------------------------------------------------+---------+
diff --git a/airflow/www/.eslintrc b/airflow/www/.eslintrc
index b1a446a31b818..29914c0cd847d 100644
--- a/airflow/www/.eslintrc
+++ b/airflow/www/.eslintrc
@@ -1,13 +1,17 @@
{
- "extends": ["airbnb", "airbnb/hooks"],
+ "extends": ["airbnb", "airbnb/hooks", "prettier"],
"parser": "@babel/eslint-parser",
"parserOptions": {
"babelOptions": {
- "presets": ["@babel/preset-env", "@babel/preset-react", "@babel/preset-typescript"],
+ "presets": [
+ "@babel/preset-env",
+ "@babel/preset-react",
+ "@babel/preset-typescript"
+ ],
"plugins": ["@babel/plugin-transform-runtime"]
}
},
- "plugins": [ "html", "react" ],
+ "plugins": ["html", "react"],
"rules": {
"no-param-reassign": 1,
"react/prop-types": 0,
@@ -21,7 +25,7 @@
"ts": "never",
"tsx": "never"
}
- ],
+ ],
"import/no-extraneous-dependencies": [
"error",
{
@@ -48,11 +52,9 @@
"overrides": [
{
"files": ["*.ts", "*.tsx"],
- "extends": [
- "airbnb-typescript"
- ],
+ "extends": ["airbnb-typescript", "prettier"],
"parser": "@typescript-eslint/parser",
- "plugins": [ "@typescript-eslint" ],
+ "plugins": ["@typescript-eslint"],
"parserOptions": {
"project": "./tsconfig.json"
},
diff --git a/airflow/www/.prettierignore b/airflow/www/.prettierignore
new file mode 100644
index 0000000000000..a2bcd8157d69c
--- /dev/null
+++ b/airflow/www/.prettierignore
@@ -0,0 +1,5 @@
+.mypy_cache/
+templates/**/*.html
+dist/
+*.md
+*.yaml
diff --git a/airflow/www/.prettierrc b/airflow/www/.prettierrc
new file mode 100644
index 0000000000000..3574cf79c5c7e
--- /dev/null
+++ b/airflow/www/.prettierrc
@@ -0,0 +1,10 @@
+{
+ "overrides": [
+ {
+ "files": "*.json",
+ "options": {
+ "tabWidth": 2
+ }
+ }
+ ]
+}
diff --git a/airflow/www/.stylelintrc b/airflow/www/.stylelintrc
index 40db42c6689bd..2e8ff5864a48b 100644
--- a/airflow/www/.stylelintrc
+++ b/airflow/www/.stylelintrc
@@ -1,3 +1,3 @@
{
- "extends": "stylelint-config-standard"
+ "extends": ["stylelint-config-standard", "stylelint-config-prettier"]
}
diff --git a/airflow/www/alias-rest-types.js b/airflow/www/alias-rest-types.js
index 44c49ced78b3d..83ddd89aaee84 100644
--- a/airflow/www/alias-rest-types.js
+++ b/airflow/www/alias-rest-types.js
@@ -17,8 +17,8 @@
* under the License.
*/
-const ts = require('typescript');
-const fs = require('fs');
+const ts = require("typescript");
+const fs = require("fs");
/* This library does three things to make openapi-typescript generation easier to use.
* 1. Creates capitalized exports for Paths and Operations
@@ -29,16 +29,16 @@ const fs = require('fs');
*/
/* Finds all words, capitalizes them, and removes all other characters. */
-const toPascalCase = (str) => (
+const toPascalCase = (str) =>
(str.match(/[a-zA-Z0-9]+/g) || [])
.map((w) => `${w.charAt(0).toUpperCase()}${w.slice(1)}`)
- .join('')
-);
+ .join("");
/* Adds a prefix to a type prop as necessary.
* ('', 'components') => 'components'
*/
-const prefixPath = (rootPrefix, prop) => (rootPrefix ? `${rootPrefix}['${prop}']` : prop);
+const prefixPath = (rootPrefix, prop) =>
+ rootPrefix ? `${rootPrefix}['${prop}']` : prop;
// Recursively find child nodes by name.
const findNode = (node, ...names) => {
@@ -58,87 +58,114 @@ const findNode = (node, ...names) => {
// Generate Variable Type Aliases for a given path or operation
const generateVariableAliases = (node, operationPath, operationName) => {
const variableTypes = [];
- const hasPath = !!findNode(node, 'parameters', 'path');
- const hasQuery = !!findNode(node, 'parameters', 'query');
- const hasBody = !!findNode(node, 'requestBody', 'content', 'application/json');
+ const hasPath = !!findNode(node, "parameters", "path");
+ const hasQuery = !!findNode(node, "parameters", "query");
+ const hasBody = !!findNode(
+ node,
+ "requestBody",
+ "content",
+ "application/json"
+ );
if (hasPath) variableTypes.push(`${operationPath}['parameters']['path']`);
if (hasQuery) variableTypes.push(`${operationPath}['parameters']['query']`);
- if (hasBody) variableTypes.push(`${operationPath}['requestBody']['content']['application/json']`);
+ if (hasBody)
+ variableTypes.push(
+ `${operationPath}['requestBody']['content']['application/json']`
+ );
- if (variableTypes.length === 0) return '';
+ if (variableTypes.length === 0) return "";
const typeName = `${toPascalCase(operationName)}Variables`;
- return [typeName, `export type ${typeName} = CamelCasedPropertiesDeep<${variableTypes.join(' & ')}>;`];
+ return [
+ typeName,
+ `export type ${typeName} = CamelCasedPropertiesDeep<${variableTypes.join(
+ " & "
+ )}>;`,
+ ];
};
// Generate Type Aliases
-const generateAliases = (rootNode, writeText, prefix = '') => {
+const generateAliases = (rootNode, writeText, prefix = "") => {
// Loop through the root AST nodes of the file
ts.forEachChild(rootNode, (node) => {
// Response Data Types
- if (ts.isInterfaceDeclaration(node) && node.name?.text === 'components') {
- const schemaMemberNames = findNode(node, 'schemas').type.members.map((n) => n.name?.text);
+ if (ts.isInterfaceDeclaration(node) && node.name?.text === "components") {
+ const schemaMemberNames = findNode(node, "schemas").type.members.map(
+ (n) => n.name?.text
+ );
const types = schemaMemberNames.map((n) => [
`${n}`,
- `export type ${n} = CamelCasedPropertiesDeep<${prefixPath(prefix, 'components')}['schemas']['${n}']>;`,
+ `export type ${n} = CamelCasedPropertiesDeep<${prefixPath(
+ prefix,
+ "components"
+ )}['schemas']['${n}']>;`,
]);
if (types.length) {
- writeText.push(['comment', `Types for returned data ${prefix}`]);
+ writeText.push(["comment", `Types for returned data ${prefix}`]);
writeText.push(...types);
}
}
// Paths referencing an operation are skipped
- if (node.name?.text === 'paths') {
+ if (node.name?.text === "paths") {
if (!prefix) {
- writeText.push(['comment', 'Alias paths to PascalCase.']);
- writeText.push(['Paths', 'export type Paths = paths;']);
+ writeText.push(["comment", "Alias paths to PascalCase."]);
+ writeText.push(["Paths", "export type Paths = paths;"]);
}
const types = [];
(node.members || node.type.members).forEach((path) => {
const methodNames = path.type.members.map((m) => m.name.text);
- const methodTypes = methodNames.map((m) => (
+ const methodTypes = methodNames.map((m) =>
generateVariableAliases(
findNode(path, m),
- `${prefixPath(prefix, 'paths')}['${path.name?.text}']['${m}']`,
- `${path.name.text}${toPascalCase(m)}`,
- )));
+ `${prefixPath(prefix, "paths")}['${path.name?.text}']['${m}']`,
+ `${path.name.text}${toPascalCase(m)}`
+ )
+ );
types.push(...methodTypes.filter((m) => !!m));
});
if (types.length) {
- writeText.push(['comment', `Types for path operation variables ${prefix}`]);
+ writeText.push([
+ "comment",
+ `Types for path operation variables ${prefix}`,
+ ]);
writeText.push(...types);
}
}
// operationIds are defined
- if (node.name?.text === 'operations') {
+ if (node.name?.text === "operations") {
if (!prefix) {
- writeText.push(['comment', 'Alias operations to PascalCase.']);
- writeText.push(['Operations', 'export type Operations = operations;']);
+ writeText.push(["comment", "Alias operations to PascalCase."]);
+ writeText.push(["Operations", "export type Operations = operations;"]);
}
- const types = (node.members || node.type.members).map((operation) => (
+ const types = (node.members || node.type.members).map((operation) =>
generateVariableAliases(
operation,
- `${prefixPath(prefix, 'operations')}['${operation.name.text}']`,
- operation.name.text,
- )));
+ `${prefixPath(prefix, "operations")}['${operation.name.text}']`,
+ operation.name.text
+ )
+ );
if (types.length) {
- writeText.push(['comment', `Types for operation variables ${prefix}`]);
+ writeText.push(["comment", `Types for operation variables ${prefix}`]);
writeText.push(...types);
- writeText.push('\n');
+ writeText.push("\n");
}
}
// recursively call this for any externals
- if (ts.isInterfaceDeclaration(node) && node.name?.text === 'external') {
+ if (ts.isInterfaceDeclaration(node) && node.name?.text === "external") {
node.members.forEach((external) => {
- generateAliases(external.type, writeText, `external['${external.name.text}']`);
+ generateAliases(
+ external.type,
+ writeText,
+ `external['${external.name.text}']`
+ );
});
}
});
@@ -169,27 +196,32 @@ function generate(file) {
const program = ts.createProgram([file], { allowJs: true });
const sourceFile = program.getSourceFile(file);
const writeText = [];
- writeText.push(['block', license]);
- writeText.push(['comment', 'eslint-disable']);
+ writeText.push(["block", license]);
+ writeText.push(["comment", "eslint-disable"]);
// eslint-disable-next-line quotes
- writeText.push(['block', `import type { CamelCasedPropertiesDeep } from 'type-fest';`]);
- writeText.push(['block', sourceFile.text]);
+ writeText.push([
+ "block",
+ `import type { CamelCasedPropertiesDeep } from 'type-fest';`,
+ ]);
+ writeText.push(["block", sourceFile.text]);
generateAliases(sourceFile, writeText);
const finalText = writeText
// Deduplicate types
.map((pair) => {
// keep all comments and code blocks
- if (pair[0] === 'comment' || pair[0] === 'block') return pair;
+ if (pair[0] === "comment" || pair[0] === "block") return pair;
// return the first instance of this key only
const firstInstance = writeText.find((p) => p[0] === pair[0]);
- return firstInstance === pair ? pair : ['comment', `Duplicate removed: ${pair[1]}`];
+ return firstInstance === pair
+ ? pair
+ : ["comment", `Duplicate removed: ${pair[1]}`];
})
// Remove undefined created above
.filter((p) => !!p)
// Escape comments and flatten.
- .map((pair) => (pair[0] === 'comment' ? `\n/* ${pair[1]} */` : pair[1]))
- .join('\n');
+ .map((pair) => (pair[0] === "comment" ? `\n/* ${pair[1]} */` : pair[1]))
+ .join("\n");
fs.writeFileSync(file, finalText, (err) => {
if (err) {
diff --git a/airflow/www/babel.config.js b/airflow/www/babel.config.js
index 7c37d14c864b5..f38c60b91fb1d 100644
--- a/airflow/www/babel.config.js
+++ b/airflow/www/babel.config.js
@@ -20,9 +20,13 @@
module.exports = function (api) {
api.cache(true);
- const presets = ['@babel/preset-env', '@babel/preset-react', '@babel/preset-typescript'];
+ const presets = [
+ "@babel/preset-env",
+ "@babel/preset-react",
+ "@babel/preset-typescript",
+ ];
- const plugins = ['@babel/plugin-transform-runtime'];
+ const plugins = ["@babel/plugin-transform-runtime"];
return {
presets,
diff --git a/airflow/www/jest-setup.js b/airflow/www/jest-setup.js
index 55a83464e5cf2..0a13d7c6444de 100644
--- a/airflow/www/jest-setup.js
+++ b/airflow/www/jest-setup.js
@@ -19,18 +19,16 @@
* under the License.
*/
-import '@testing-library/jest-dom';
-import axios from 'axios';
-import { setLogger } from 'react-query';
+import "@testing-library/jest-dom";
+import axios from "axios";
+import { setLogger } from "react-query";
// eslint-disable-next-line import/no-extraneous-dependencies
-import moment from 'moment-timezone';
+import moment from "moment-timezone";
-axios.defaults.adapter = require('axios/lib/adapters/http');
+axios.defaults.adapter = require("axios/lib/adapters/http");
-axios.interceptors.response.use(
- (res) => res.data || res,
-);
+axios.interceptors.response.use((res) => res.data || res);
setLogger({
log: console.log,
@@ -41,19 +39,19 @@ setLogger({
// Mock global objects we use across the app
global.stateColors = {
- deferred: 'mediumpurple',
- failed: 'red',
- queued: 'gray',
- removed: 'lightgrey',
- restarting: 'violet',
- running: 'lime',
- scheduled: 'tan',
- shutdown: 'blue',
- skipped: 'hotpink',
- success: 'green',
- up_for_reschedule: 'turquoise',
- up_for_retry: 'gold',
- upstream_failed: 'orange',
+ deferred: "mediumpurple",
+ failed: "red",
+ queued: "gray",
+ removed: "lightgrey",
+ restarting: "violet",
+ running: "lime",
+ scheduled: "tan",
+ shutdown: "blue",
+ skipped: "hotpink",
+ success: "green",
+ up_for_reschedule: "turquoise",
+ up_for_retry: "gold",
+ upstream_failed: "orange",
};
global.defaultDagRunDisplayNumber = 245;
diff --git a/airflow/www/jest.config.js b/airflow/www/jest.config.js
index 3c35fa9d68fa1..11f8da1c4c4df 100644
--- a/airflow/www/jest.config.js
+++ b/airflow/www/jest.config.js
@@ -20,42 +20,42 @@
const config = {
verbose: true,
transform: {
- '^.+\\.[jt]sx?$': 'babel-jest',
+ "^.+\\.[jt]sx?$": "babel-jest",
},
- testEnvironment: 'jsdom',
- setupFilesAfterEnv: ['./jest-setup.js'],
- moduleDirectories: ['node_modules'],
- moduleNameMapper: { // Listing all aliases
- '^src/(.*)$': '/static/js/$1',
+ testEnvironment: "jsdom",
+ setupFilesAfterEnv: ["./jest-setup.js"],
+ moduleDirectories: ["node_modules"],
+ moduleNameMapper: {
+ // Listing all aliases
+ "^src/(.*)$": "/static/js/$1",
},
transformIgnorePatterns: [
- `node_modules/(?!${
- [ // specify modules that needs to be transformed for jest. (esm modules)
- 'react-markdown',
- 'vfile',
- 'vfile-message',
- 'unist',
- 'unified',
- 'bail',
- 'is-plain-obj',
- 'trough',
- 'remark-parse',
- 'mdast',
- 'micromark',
- 'decode-named-character-reference',
- 'character-entities',
- 'remark-rehype',
- 'trim-lines',
- 'property-information',
- 'hast',
- 'space-separated-tokens',
- 'comma-separated-tokens',
- 'remark-gfm',
- 'ccount',
- 'escape-string-regexp',
- 'markdown-table',
- ].join('|')
- })`,
+ `node_modules/(?!${[
+ // specify modules that needs to be transformed for jest. (esm modules)
+ "react-markdown",
+ "vfile",
+ "vfile-message",
+ "unist",
+ "unified",
+ "bail",
+ "is-plain-obj",
+ "trough",
+ "remark-parse",
+ "mdast",
+ "micromark",
+ "decode-named-character-reference",
+ "character-entities",
+ "remark-rehype",
+ "trim-lines",
+ "property-information",
+ "hast",
+ "space-separated-tokens",
+ "comma-separated-tokens",
+ "remark-gfm",
+ "ccount",
+ "escape-string-regexp",
+ "markdown-table",
+ ].join("|")})`,
],
};
diff --git a/airflow/www/package.json b/airflow/www/package.json
index c96640723c7bd..bbce06550edea 100644
--- a/airflow/www/package.json
+++ b/airflow/www/package.json
@@ -9,6 +9,7 @@
"build": "NODE_ENV=production webpack --progress --mode production",
"lint": "eslint --ignore-path=.eslintignore --ext .js,.jsx,.ts,.tsx . && tsc",
"lint:fix": "eslint --fix --ignore-path=.eslintignore --ext .js,.jsx,.ts,.tsx . && tsc",
+ "format": "yarn prettier --write .",
"generate-api-types": "npx openapi-typescript \"../api_connexion/openapi/v1.yaml\" --output static/js/types/api-generated.ts && node alias-rest-types.js static/js/types/api-generated.ts"
},
"author": "Apache",
@@ -52,6 +53,7 @@
"eslint": "^8.6.0",
"eslint-config-airbnb": "^19.0.4",
"eslint-config-airbnb-typescript": "^17.0.0",
+ "eslint-config-prettier": "^8.6.0",
"eslint-plugin-html": "^6.0.2",
"eslint-plugin-import": "^2.25.3",
"eslint-plugin-jsx-a11y": "^6.5.0",
@@ -68,8 +70,10 @@
"moment-locales-webpack-plugin": "^1.2.0",
"nock": "^13.2.4",
"openapi-typescript": "^5.4.1",
+ "prettier": "^2.8.4",
"style-loader": "^1.2.1",
"stylelint": "^13.6.1",
+ "stylelint-config-prettier": "^9.0.5",
"stylelint-config-standard": "^20.0.0",
"terser-webpack-plugin": "<5.0.0",
"typescript": "^4.6.3",
diff --git a/airflow/www/static/css/bootstrap-theme.css b/airflow/www/static/css/bootstrap-theme.css
index 6095498d570df..371762d55857e 100644
--- a/airflow/www/static/css/bootstrap-theme.css
+++ b/airflow/www/static/css/bootstrap-theme.css
@@ -703,7 +703,7 @@ blockquote .small {
blockquote footer::before,
blockquote small::before,
blockquote .small::before {
- content: '\2014 \00A0';
+ content: "\2014 \00A0";
}
.blockquote-reverse,
blockquote.pull-right {
@@ -719,7 +719,7 @@ blockquote.pull-right footer::before,
blockquote.pull-right small::before,
.blockquote-reverse .small::before,
blockquote.pull-right .small::before {
- content: '';
+ content: "";
}
.blockquote-reverse footer::after,
blockquote.pull-right footer::after,
@@ -727,7 +727,7 @@ blockquote.pull-right footer::after,
blockquote.pull-right small::after,
.blockquote-reverse .small::after,
blockquote.pull-right .small::after {
- content: '\00A0 \2014';
+ content: "\00A0 \2014";
}
address {
margin-bottom: 20px;
@@ -1866,15 +1866,18 @@ output {
border-radius: 4px;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
+ -webkit-transition: border-color ease-in-out 0.15s,
+ box-shadow ease-in-out 0.15s;
-o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
}
.form-control:focus {
border-color: #66afe9;
outline: 0;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075),
+ 0 0 8px rgba(102, 175, 233, 0.6);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075),
+ 0 0 8px rgba(102, 175, 233, 0.6);
}
.form-control::-moz-placeholder {
color: #999;
@@ -2991,11 +2994,15 @@ tbody.collapse.in {
border-radius: 0;
}
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
-.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+.btn-group-vertical
+ > .btn-group:first-child:not(:last-child)
+ > .dropdown-toggle {
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
-.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
+.btn-group-vertical
+ > .btn-group:last-child:not(:first-child)
+ > .btn:first-child {
border-top-right-radius: 0;
border-top-left-radius: 0;
}
@@ -3598,8 +3605,10 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
padding: 10px 15px;
border-top: 1px solid transparent;
border-bottom: 1px solid transparent;
- -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1),
+ 0 1px 0 rgba(255, 255, 255, 0.1);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1),
+ 0 1px 0 rgba(255, 255, 255, 0.1);
margin-top: 8px;
margin-bottom: 8px;
}
@@ -4403,9 +4412,36 @@ a.thumbnail.active {
}
.progress-striped .progress-bar,
.progress-bar-striped {
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -webkit-linear-gradient(
+ 45deg,
+ rgba(255, 255, 255, 0.15) 25%,
+ transparent 25%,
+ transparent 50%,
+ rgba(255, 255, 255, 0.15) 50%,
+ rgba(255, 255, 255, 0.15) 75%,
+ transparent 75%,
+ transparent
+ );
+ background-image: -o-linear-gradient(
+ 45deg,
+ rgba(255, 255, 255, 0.15) 25%,
+ transparent 25%,
+ transparent 50%,
+ rgba(255, 255, 255, 0.15) 50%,
+ rgba(255, 255, 255, 0.15) 75%,
+ transparent 75%,
+ transparent
+ );
+ background-image: linear-gradient(
+ 45deg,
+ rgba(255, 255, 255, 0.15) 25%,
+ transparent 25%,
+ transparent 50%,
+ rgba(255, 255, 255, 0.15) 50%,
+ rgba(255, 255, 255, 0.15) 75%,
+ transparent 75%,
+ transparent
+ );
background-size: 40px 40px;
}
.progress.active .progress-bar,
@@ -4418,33 +4454,141 @@ a.thumbnail.active {
background-color: #00ad46;
}
.progress-striped .progress-bar-success {
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -webkit-linear-gradient(
+ 45deg,
+ rgba(255, 255, 255, 0.15) 25%,
+ transparent 25%,
+ transparent 50%,
+ rgba(255, 255, 255, 0.15) 50%,
+ rgba(255, 255, 255, 0.15) 75%,
+ transparent 75%,
+ transparent
+ );
+ background-image: -o-linear-gradient(
+ 45deg,
+ rgba(255, 255, 255, 0.15) 25%,
+ transparent 25%,
+ transparent 50%,
+ rgba(255, 255, 255, 0.15) 50%,
+ rgba(255, 255, 255, 0.15) 75%,
+ transparent 75%,
+ transparent
+ );
+ background-image: linear-gradient(
+ 45deg,
+ rgba(255, 255, 255, 0.15) 25%,
+ transparent 25%,
+ transparent 50%,
+ rgba(255, 255, 255, 0.15) 50%,
+ rgba(255, 255, 255, 0.15) 75%,
+ transparent 75%,
+ transparent
+ );
}
.progress-bar-info {
background-color: #00d1c1;
}
.progress-striped .progress-bar-info {
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -webkit-linear-gradient(
+ 45deg,
+ rgba(255, 255, 255, 0.15) 25%,
+ transparent 25%,
+ transparent 50%,
+ rgba(255, 255, 255, 0.15) 50%,
+ rgba(255, 255, 255, 0.15) 75%,
+ transparent 75%,
+ transparent
+ );
+ background-image: -o-linear-gradient(
+ 45deg,
+ rgba(255, 255, 255, 0.15) 25%,
+ transparent 25%,
+ transparent 50%,
+ rgba(255, 255, 255, 0.15) 50%,
+ rgba(255, 255, 255, 0.15) 75%,
+ transparent 75%,
+ transparent
+ );
+ background-image: linear-gradient(
+ 45deg,
+ rgba(255, 255, 255, 0.15) 25%,
+ transparent 25%,
+ transparent 50%,
+ rgba(255, 255, 255, 0.15) 50%,
+ rgba(255, 255, 255, 0.15) 75%,
+ transparent 75%,
+ transparent
+ );
}
.progress-bar-warning {
background-color: #ffb400;
}
.progress-striped .progress-bar-warning {
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -webkit-linear-gradient(
+ 45deg,
+ rgba(255, 255, 255, 0.15) 25%,
+ transparent 25%,
+ transparent 50%,
+ rgba(255, 255, 255, 0.15) 50%,
+ rgba(255, 255, 255, 0.15) 75%,
+ transparent 75%,
+ transparent
+ );
+ background-image: -o-linear-gradient(
+ 45deg,
+ rgba(255, 255, 255, 0.15) 25%,
+ transparent 25%,
+ transparent 50%,
+ rgba(255, 255, 255, 0.15) 50%,
+ rgba(255, 255, 255, 0.15) 75%,
+ transparent 75%,
+ transparent
+ );
+ background-image: linear-gradient(
+ 45deg,
+ rgba(255, 255, 255, 0.15) 25%,
+ transparent 25%,
+ transparent 50%,
+ rgba(255, 255, 255, 0.15) 50%,
+ rgba(255, 255, 255, 0.15) 75%,
+ transparent 75%,
+ transparent
+ );
}
.progress-bar-danger {
background-color: #ff5a5f;
}
.progress-striped .progress-bar-danger {
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -webkit-linear-gradient(
+ 45deg,
+ rgba(255, 255, 255, 0.15) 25%,
+ transparent 25%,
+ transparent 50%,
+ rgba(255, 255, 255, 0.15) 50%,
+ rgba(255, 255, 255, 0.15) 75%,
+ transparent 75%,
+ transparent
+ );
+ background-image: -o-linear-gradient(
+ 45deg,
+ rgba(255, 255, 255, 0.15) 25%,
+ transparent 25%,
+ transparent 50%,
+ rgba(255, 255, 255, 0.15) 50%,
+ rgba(255, 255, 255, 0.15) 75%,
+ transparent 75%,
+ transparent
+ );
+ background-image: linear-gradient(
+ 45deg,
+ rgba(255, 255, 255, 0.15) 25%,
+ transparent 25%,
+ transparent 50%,
+ rgba(255, 255, 255, 0.15) 50%,
+ rgba(255, 255, 255, 0.15) 75%,
+ transparent 75%,
+ transparent
+ );
}
.media {
margin-top: 15px;
@@ -4703,7 +4847,10 @@ a.list-group-item-danger.active:focus {
border-radius: 0;
}
.panel > .list-group:first-child .list-group-item:first-child,
-.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
+.panel
+ > .panel-collapse
+ > .list-group:first-child
+ .list-group-item:first-child {
border-top: 0;
border-top-right-radius: 3px;
border-top-left-radius: 3px;
@@ -4737,30 +4884,78 @@ a.list-group-item-danger.active:focus {
border-top-left-radius: 3px;
}
.panel > .table:first-child > thead:first-child > tr:first-child,
-.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
+.panel
+ > .table-responsive:first-child
+ > .table:first-child
+ > thead:first-child
+ > tr:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child,
-.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
+.panel
+ > .table-responsive:first-child
+ > .table:first-child
+ > tbody:first-child
+ > tr:first-child {
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
-.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
+.panel
+ > .table-responsive:first-child
+ > .table:first-child
+ > thead:first-child
+ > tr:first-child
+ td:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
-.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+.panel
+ > .table-responsive:first-child
+ > .table:first-child
+ > tbody:first-child
+ > tr:first-child
+ td:first-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
-.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
+.panel
+ > .table-responsive:first-child
+ > .table:first-child
+ > thead:first-child
+ > tr:first-child
+ th:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
-.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
+.panel
+ > .table-responsive:first-child
+ > .table:first-child
+ > tbody:first-child
+ > tr:first-child
+ th:first-child {
border-top-left-radius: 3px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
-.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
+.panel
+ > .table-responsive:first-child
+ > .table:first-child
+ > thead:first-child
+ > tr:first-child
+ td:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
-.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+.panel
+ > .table-responsive:first-child
+ > .table:first-child
+ > tbody:first-child
+ > tr:first-child
+ td:last-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
-.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
+.panel
+ > .table-responsive:first-child
+ > .table:first-child
+ > thead:first-child
+ > tr:first-child
+ th:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
-.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
+.panel
+ > .table-responsive:first-child
+ > .table:first-child
+ > tbody:first-child
+ > tr:first-child
+ th:last-child {
border-top-right-radius: 3px;
}
.panel > .table:last-child,
@@ -4769,30 +4964,78 @@ a.list-group-item-danger.active:focus {
border-bottom-left-radius: 3px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
+.panel
+ > .table-responsive:last-child
+ > .table:last-child
+ > tbody:last-child
+ > tr:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
+.panel
+ > .table-responsive:last-child
+ > .table:last-child
+ > tfoot:last-child
+ > tr:last-child {
border-bottom-left-radius: 3px;
border-bottom-right-radius: 3px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
-.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+.panel
+ > .table-responsive:last-child
+ > .table:last-child
+ > tbody:last-child
+ > tr:last-child
+ td:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
-.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+.panel
+ > .table-responsive:last-child
+ > .table:last-child
+ > tfoot:last-child
+ > tr:last-child
+ td:first-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
-.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+.panel
+ > .table-responsive:last-child
+ > .table:last-child
+ > tbody:last-child
+ > tr:last-child
+ th:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
-.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
+.panel
+ > .table-responsive:last-child
+ > .table:last-child
+ > tfoot:last-child
+ > tr:last-child
+ th:first-child {
border-bottom-left-radius: 3px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+.panel
+ > .table-responsive:last-child
+ > .table:last-child
+ > tbody:last-child
+ > tr:last-child
+ td:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+.panel
+ > .table-responsive:last-child
+ > .table:last-child
+ > tfoot:last-child
+ > tr:last-child
+ td:last-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+.panel
+ > .table-responsive:last-child
+ > .table:last-child
+ > tbody:last-child
+ > tr:last-child
+ th:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
+.panel
+ > .table-responsive:last-child
+ > .table:last-child
+ > tfoot:last-child
+ > tr:last-child
+ th:last-child {
border-bottom-right-radius: 3px;
}
.panel > .panel-body + .table,
@@ -5476,17 +5719,41 @@ button.close {
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
}
.carousel-control.left {
- background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
- background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
- background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
+ background-image: -webkit-linear-gradient(
+ left,
+ rgba(0, 0, 0, 0.5) 0%,
+ rgba(0, 0, 0, 0.0001) 100%
+ );
+ background-image: -o-linear-gradient(
+ left,
+ rgba(0, 0, 0, 0.5) 0%,
+ rgba(0, 0, 0, 0.0001) 100%
+ );
+ background-image: linear-gradient(
+ to right,
+ rgba(0, 0, 0, 0.5) 0%,
+ rgba(0, 0, 0, 0.0001) 100%
+ );
background-repeat: repeat-x;
}
.carousel-control.right {
left: auto;
right: 0;
- background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
- background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
- background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
+ background-image: -webkit-linear-gradient(
+ left,
+ rgba(0, 0, 0, 0.0001) 0%,
+ rgba(0, 0, 0, 0.5) 100%
+ );
+ background-image: -o-linear-gradient(
+ left,
+ rgba(0, 0, 0, 0.0001) 0%,
+ rgba(0, 0, 0, 0.5) 100%
+ );
+ background-image: linear-gradient(
+ to right,
+ rgba(0, 0, 0, 0.0001) 0%,
+ rgba(0, 0, 0, 0.5) 100%
+ );
background-repeat: repeat-x;
}
.carousel-control:hover,
@@ -5524,10 +5791,10 @@ button.close {
font-family: serif;
}
.carousel-control .icon-prev::before {
- content: '\2039';
+ content: "\2039";
}
.carousel-control .icon-next::before {
- content: '\203a';
+ content: "\203a";
}
.carousel-indicators {
position: absolute;
diff --git a/airflow/www/static/css/dags.css b/airflow/www/static/css/dags.css
index 517a538f3948f..19f1c5ef9f78e 100644
--- a/airflow/www/static/css/dags.css
+++ b/airflow/www/static/css/dags.css
@@ -72,7 +72,7 @@
.dags-table-more__menu::before {
width: 0;
height: 100%;
- content: '';
+ content: "";
pointer-events: none;
transition: width 0.3s ease-in;
}
@@ -92,7 +92,11 @@ tr:nth-child(2n) .dags-table-more__menu:hover {
}
tr:nth-child(2n) .dags-table-more__menu:hover::before {
- background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, #f9f9f9 100%);
+ background: linear-gradient(
+ to right,
+ rgba(255, 255, 255, 0) 0%,
+ #f9f9f9 100%
+ );
}
tr:nth-child(odd):hover .dags-table-more__menu:hover,
@@ -102,7 +106,11 @@ tr:nth-child(2n):hover .dags-table-more__menu:hover {
tr:nth-child(odd):hover .dags-table-more__menu:hover::before,
tr:nth-child(2n):hover .dags-table-more__menu:hover::before {
- background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, #f5f5f5 100%);
+ background: linear-gradient(
+ to right,
+ rgba(255, 255, 255, 0) 0%,
+ #f5f5f5 100%
+ );
}
.dags-table-more__links {
diff --git a/airflow/www/static/css/flash.css b/airflow/www/static/css/flash.css
index 272d46c79f913..21146948b36ad 100644
--- a/airflow/www/static/css/flash.css
+++ b/airflow/www/static/css/flash.css
@@ -19,7 +19,7 @@
.panel-heading #alerts-accordion-toggle::after {
/* symbol for "opening" panels */
- font-family: FontAwesome;/* stylelint-disable-line font-family-no-missing-generic-family-keyword */
+ font-family: FontAwesome; /* stylelint-disable-line font-family-no-missing-generic-family-keyword */
content: "\f077";
float: right;
color: grey;
@@ -27,7 +27,7 @@
.panel-heading #alerts-accordion-toggle.collapsed::after {
/* symbol for "closing" panels */
- font-family: FontAwesome;/* stylelint-disable-line font-family-no-missing-generic-family-keyword */
+ font-family: FontAwesome; /* stylelint-disable-line font-family-no-missing-generic-family-keyword */
content: "\f078";
float: right;
color: grey;
@@ -52,7 +52,7 @@
.dag-import-error::after {
/* symbol for "opening" panels */
- font-family: FontAwesome;/* stylelint-disable-line font-family-no-missing-generic-family-keyword */
+ font-family: FontAwesome; /* stylelint-disable-line font-family-no-missing-generic-family-keyword */
content: "\f078";
float: right;
color: #e43921;
diff --git a/airflow/www/static/css/main.css b/airflow/www/static/css/main.css
index 59a3d727c1098..c625061c4863e 100644
--- a/airflow/www/static/css/main.css
+++ b/airflow/www/static/css/main.css
@@ -89,7 +89,7 @@ div.container {
.brand-logo {
width: 104px;
height: 40px;
- overflow: visible !important;/* Allow for animation */
+ overflow: visible !important; /* Allow for animation */
}
@keyframes pinSpin {
@@ -207,15 +207,15 @@ table.dataframe.dataTable thead > tr > th {
}
table.dataTable.dataframe thead .sorting {
- background: url('./../sort_both.png') no-repeat center right;
+ background: url("./../sort_both.png") no-repeat center right;
}
table.dataTable.dataframe thead .sorting_desc {
- background: url('./../sort_desc.png') no-repeat center right;
+ background: url("./../sort_desc.png") no-repeat center right;
}
table.dataTable.dataframe thead .sorting_asc {
- background: url('./../sort_asc.png') no-repeat center right;
+ background: url("./../sort_asc.png") no-repeat center right;
}
.no-wrap {
@@ -304,59 +304,227 @@ label[for="timezone-other"],
transform: rotate(180deg);
}
-/* stylelint-disable declaration-block-single-line-max-declarations */
-.hll { background-color: #ffc; }
-.c { color: #408080; font-style: italic; } /* Comment */
-.err { border: 1px solid #f00; } /* Error */
-.k { color: #008000; font-weight: bold; } /* Keyword */
-.o { color: #666; } /* Operator */
-.cm { color: #408080; font-style: italic; } /* Comment.Multiline */
-.cp { color: #bc7a00; } /* Comment.Preproc */
-.c1 { color: #408080; font-style: italic; } /* Comment.Single */
-.cs { color: #408080; font-style: italic; } /* Comment.Special */
-.gd { color: #a00000; } /* Generic.Deleted */
-.ge { font-style: italic; } /* Generic.Emph */
-.gr { color: #f00; } /* Generic.Error */
-.gh { color: #000080; font-weight: bold; } /* Generic.Heading */
-.gi { color: #00a000; } /* Generic.Inserted */
-.go { color: #888; } /* Generic.Output */
-.gp { color: #000080; font-weight: bold; } /* Generic.Prompt */
-.gs { font-weight: bold; } /* Generic.Strong */
-.gu { color: #800080; font-weight: bold; } /* Generic.Subheading */
-.gt { color: #04d; } /* Generic.Traceback */
-.kc { color: #008000; font-weight: bold; } /* Keyword.Constant */
-.kd { color: #008000; font-weight: bold; } /* Keyword.Declaration */
-.kn { color: #008000; font-weight: bold; } /* Keyword.Namespace */
-.kp { color: #008000; } /* Keyword.Pseudo */
-.kr { color: #008000; font-weight: bold; } /* Keyword.Reserved */
-.kt { color: #b00040; } /* Keyword.Type */
-.m { color: #666; } /* Literal.Number */
-.s { color: #ba2121; } /* Literal.String */
-.na { color: #7d9029; } /* Name.Attribute */
-.nb { color: #008000; } /* Name.Builtin */
-.nc { color: #00f; font-weight: bold; } /* Name.Class */
-.no { color: #800; } /* Name.Constant */
-.nd { color: #a2f; } /* Name.Decorator */
-.ni { color: #999; font-weight: bold; } /* Name.Entity */
-.ne { color: #d2413a; font-weight: bold; } /* Name.Exception */
-.nf { color: #00f; } /* Name.Function */
-.nl { color: #a0a000; } /* Name.Label */
-.nn { color: #00f; font-weight: bold; } /* Name.Namespace */
-.nt { color: #008000; font-weight: bold; } /* Name.Tag */
-.nv { color: #19177c; } /* Name.Variable */
-.ow { color: #a2f; font-weight: bold; } /* Operator.Word */
-.w { color: #bbb; } /* Text.Whitespace */
-.mb { color: #666; } /* Literal.Number.Bin */
-.mf { color: #666; } /* Literal.Number.Float */
-.mh { color: #666; } /* Literal.Number.Hex */
-.mi { color: #666; } /* Literal.Number.Integer */
-.mo { color: #666; } /* Literal.Number.Oct */
-.sb { color: #ba2121; } /* Literal.String.Backtick */
-.sc { color: #ba2121; } /* Literal.String.Char */
-.sd { color: #ba2121; font-style: italic; } /* Literal.String.Doc */
-.s2 { color: #ba2121; } /* Literal.String.Double */
-.s1 { color: #ba2121; } /* Literal.String.Single */
-/* stylelint-enable declaration-block-single-line-max-declarations */
+.hll {
+ background-color: #ffc;
+}
+
+.c {
+ color: #408080;
+ font-style: italic;
+} /* Comment */
+
+.err {
+ border: 1px solid #f00;
+} /* Error */
+
+.k {
+ color: #008000;
+ font-weight: bold;
+} /* Keyword */
+
+.o {
+ color: #666;
+} /* Operator */
+
+.cm {
+ color: #408080;
+ font-style: italic;
+} /* Comment.Multiline */
+
+.cp {
+ color: #bc7a00;
+} /* Comment.Preproc */
+
+.c1 {
+ color: #408080;
+ font-style: italic;
+} /* Comment.Single */
+
+.cs {
+ color: #408080;
+ font-style: italic;
+} /* Comment.Special */
+
+.gd {
+ color: #a00000;
+} /* Generic.Deleted */
+.ge {
+ font-style: italic;
+} /* Generic.Emph */
+
+.gr {
+ color: #f00;
+} /* Generic.Error */
+
+.gh {
+ color: #000080;
+ font-weight: bold;
+} /* Generic.Heading */
+
+.gi {
+ color: #00a000;
+} /* Generic.Inserted */
+
+.go {
+ color: #888;
+} /* Generic.Output */
+
+.gp {
+ color: #000080;
+ font-weight: bold;
+} /* Generic.Prompt */
+
+.gs {
+ font-weight: bold;
+} /* Generic.Strong */
+
+.gu {
+ color: #800080;
+ font-weight: bold;
+} /* Generic.Subheading */
+
+.gt {
+ color: #04d;
+} /* Generic.Traceback */
+
+.kc {
+ color: #008000;
+ font-weight: bold;
+} /* Keyword.Constant */
+
+.kd {
+ color: #008000;
+ font-weight: bold;
+} /* Keyword.Declaration */
+
+.kn {
+ color: #008000;
+ font-weight: bold;
+} /* Keyword.Namespace */
+
+.kp {
+ color: #008000;
+} /* Keyword.Pseudo */
+
+.kr {
+ color: #008000;
+ font-weight: bold;
+} /* Keyword.Reserved */
+
+.kt {
+ color: #b00040;
+} /* Keyword.Type */
+
+.m {
+ color: #666;
+} /* Literal.Number */
+
+.s {
+ color: #ba2121;
+} /* Literal.String */
+
+.na {
+ color: #7d9029;
+} /* Name.Attribute */
+
+.nb {
+ color: #008000;
+} /* Name.Builtin */
+
+.nc {
+ color: #00f;
+ font-weight: bold;
+} /* Name.Class */
+
+.no {
+ color: #800;
+} /* Name.Constant */
+
+.nd {
+ color: #a2f;
+} /* Name.Decorator */
+
+.ni {
+ color: #999;
+ font-weight: bold;
+} /* Name.Entity */
+
+.ne {
+ color: #d2413a;
+ font-weight: bold;
+} /* Name.Exception */
+
+.nf {
+ color: #00f;
+} /* Name.Function */
+
+.nl {
+ color: #a0a000;
+} /* Name.Label */
+
+.nn {
+ color: #00f;
+ font-weight: bold;
+} /* Name.Namespace */
+
+.nt {
+ color: #008000;
+ font-weight: bold;
+} /* Name.Tag */
+
+.nv {
+ color: #19177c;
+} /* Name.Variable */
+
+.ow {
+ color: #a2f;
+ font-weight: bold;
+} /* Operator.Word */
+
+.w {
+ color: #bbb;
+} /* Text.Whitespace */
+
+.mb {
+ color: #666;
+} /* Literal.Number.Bin */
+
+.mf {
+ color: #666;
+} /* Literal.Number.Float */
+
+.mh {
+ color: #666;
+} /* Literal.Number.Hex */
+
+.mi {
+ color: #666;
+} /* Literal.Number.Integer */
+
+.mo {
+ color: #666;
+} /* Literal.Number.Oct */
+
+.sb {
+ color: #ba2121;
+} /* Literal.String.Backtick */
+
+.sc {
+ color: #ba2121;
+} /* Literal.String.Char */
+
+.sd {
+ color: #ba2121;
+ font-style: italic;
+} /* Literal.String.Doc */
+
+.s2 {
+ color: #ba2121;
+} /* Literal.String.Double */
+
+.s1 {
+ color: #ba2121;
+} /* Literal.String.Single */
.footer {
display: flex;
diff --git a/airflow/www/static/css/material-icons.css b/airflow/www/static/css/material-icons.css
index 12a44a42fa3c0..9ab8255f90157 100644
--- a/airflow/www/static/css/material-icons.css
+++ b/airflow/www/static/css/material-icons.css
@@ -18,17 +18,18 @@
*/
@font-face {
- font-family: 'Material Icons';
+ font-family: "Material Icons";
font-style: normal;
font-weight: 400;
- src: url(data:font/woff2;base64,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) format('woff2');
+ src: url(data:font/woff2;base64,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)
+ format("woff2");
}
.material-icons {
- font-family: 'Material Icons'; /* stylelint-disable font-family-no-missing-generic-family-keyword */
+ font-family: "Material Icons"; /* stylelint-disable font-family-no-missing-generic-family-keyword */
font-weight: normal;
font-style: normal;
- font-size: 20px; /* Default icon size */
+ font-size: 20px; /* Default icon size */
display: inline-block;
line-height: 1;
text-transform: none;
@@ -50,13 +51,24 @@
-moz-osx-font-smoothing: grayscale;
/* Support for IE. */
- font-feature-settings: 'liga';
+ font-feature-settings: "liga";
}
-.material-icons.md-18 { font-size: 18px; }
-.material-icons.md-24 { font-size: 24px; }
-.material-icons.md-36 { font-size: 36px; }
-.material-icons.md-48 { font-size: 48px; }
+.material-icons.md-18 {
+ font-size: 18px;
+}
+
+.material-icons.md-24 {
+ font-size: 24px;
+}
+
+.material-icons.md-36 {
+ font-size: 36px;
+}
+
+.material-icons.md-48 {
+ font-size: 48px;
+}
.dropdown-menu > li > a > .material-icons {
margin-right: 6px;
diff --git a/airflow/www/static/css/switch.css b/airflow/www/static/css/switch.css
index 4890641f55a22..39d5db446127b 100644
--- a/airflow/www/static/css/switch.css
+++ b/airflow/www/static/css/switch.css
@@ -57,7 +57,7 @@
border-radius: 50%;
width: 1.5rem;
height: 1.5rem;
- content: '';
+ content: "";
background-color: #edecec;
transition-timing-function: ease-in-out;
transition-duration: 0.25s;
diff --git a/airflow/www/static/js/App.tsx b/airflow/www/static/js/App.tsx
index cbdd3fa09665e..6602a0ae9eeda 100644
--- a/airflow/www/static/js/App.tsx
+++ b/airflow/www/static/js/App.tsx
@@ -21,22 +21,22 @@
Base setup for anywhere we add react to the UI
*/
-import React, { PropsWithChildren } from 'react';
-import { BrowserRouter } from 'react-router-dom';
-import { ChakraProvider } from '@chakra-ui/react';
-import { CacheProvider } from '@emotion/react';
-import type { EmotionCache } from '@emotion/cache';
-import { QueryClient, QueryClientProvider } from 'react-query';
+import React, { PropsWithChildren } from "react";
+import { BrowserRouter } from "react-router-dom";
+import { ChakraProvider } from "@chakra-ui/react";
+import { CacheProvider } from "@emotion/react";
+import type { EmotionCache } from "@emotion/cache";
+import { QueryClient, QueryClientProvider } from "react-query";
-import theme from './theme';
-import { ContainerRefProvider, useContainerRef } from './context/containerRef';
-import { TimezoneProvider } from './context/timezone';
-import { AutoRefreshProvider } from './context/autorefresh';
+import theme from "./theme";
+import { ContainerRefProvider, useContainerRef } from "./context/containerRef";
+import { TimezoneProvider } from "./context/timezone";
+import { AutoRefreshProvider } from "./context/autorefresh";
const queryClient = new QueryClient({
defaultOptions: {
queries: {
- notifyOnChangeProps: 'tracked',
+ notifyOnChangeProps: "tracked",
refetchOnWindowFocus: false,
retry: 1,
retryDelay: 500,
@@ -59,13 +59,14 @@ interface AppProps extends PropsWithChildren {
const ChakraApp = ({ children }: PropsWithChildren) => {
const containerRef = useContainerRef();
return (
-
+
-
- {children}
-
+ {children}
@@ -78,9 +79,7 @@ function App({ children, cache }: AppProps) {
-
- {children}
-
+ {children}
diff --git a/airflow/www/static/js/README.md b/airflow/www/static/js/README.md
index c17c5849775f4..1b4c6607a6626 100644
--- a/airflow/www/static/js/README.md
+++ b/airflow/www/static/js/README.md
@@ -27,20 +27,17 @@ The most popular javascript framework for building user interfaces with reusable
Written as javascript and html together in `.jsx` files.
In-component state can be managed via `useState()`, application state that spans many components can be managed via a context provider (see `/context` for examples), API state can be managed by React Query (see below)
-
## [Chakra UI](https://chakra-ui.com/)
A good component and helper function library. Tooltips, modals, toasts, switches, etc are all out of the box
Styles are applied via global theme when initializing the app or inline with individual components like ``
-
## [React Query](https://react-query.tanstack.com/)
A powerful async data handler that makes it easy to manage loading/error states as well as caching, refetching, background updates, etc.
This is our state management for any data that comes from an API.
Each API request is its own hook. Ie `useTasks` will get all the tasks for a DAG
-
## [React Testing Library](https://testing-library.com/docs/react-testing-library/intro/)
Easily write tests for react components and hooks
diff --git a/airflow/www/static/js/api/index.ts b/airflow/www/static/js/api/index.ts
index d055f737d965c..0749565f6f5d2 100644
--- a/airflow/www/static/js/api/index.ts
+++ b/airflow/www/static/js/api/index.ts
@@ -17,34 +17,34 @@
* under the License.
*/
-import axios, { AxiosResponse } from 'axios';
-import camelcaseKeys from 'camelcase-keys';
+import axios, { AxiosResponse } from "axios";
+import camelcaseKeys from "camelcase-keys";
-import useClearRun from './useClearRun';
-import useQueueRun from './useQueueRun';
-import useMarkFailedRun from './useMarkFailedRun';
-import useMarkSuccessRun from './useMarkSuccessRun';
-import useClearTask from './useClearTask';
-import useMarkFailedTask from './useMarkFailedTask';
-import useMarkSuccessTask from './useMarkSuccessTask';
-import useExtraLinks from './useExtraLinks';
-import useConfirmMarkTask from './useConfirmMarkTask';
-import useGridData from './useGridData';
-import useMappedInstances from './useMappedInstances';
-import useDatasets from './useDatasets';
-import useDataset from './useDataset';
-import useDatasetDependencies from './useDatasetDependencies';
-import useDatasetEvents from './useDatasetEvents';
-import useSetDagRunNote from './useSetDagRunNote';
-import useSetTaskInstanceNote from './useSetTaskInstanceNote';
-import useUpstreamDatasetEvents from './useUpstreamDatasetEvents';
-import useTaskInstance from './useTaskInstance';
+import useClearRun from "./useClearRun";
+import useQueueRun from "./useQueueRun";
+import useMarkFailedRun from "./useMarkFailedRun";
+import useMarkSuccessRun from "./useMarkSuccessRun";
+import useClearTask from "./useClearTask";
+import useMarkFailedTask from "./useMarkFailedTask";
+import useMarkSuccessTask from "./useMarkSuccessTask";
+import useExtraLinks from "./useExtraLinks";
+import useConfirmMarkTask from "./useConfirmMarkTask";
+import useGridData from "./useGridData";
+import useMappedInstances from "./useMappedInstances";
+import useDatasets from "./useDatasets";
+import useDataset from "./useDataset";
+import useDatasetDependencies from "./useDatasetDependencies";
+import useDatasetEvents from "./useDatasetEvents";
+import useSetDagRunNote from "./useSetDagRunNote";
+import useSetTaskInstanceNote from "./useSetTaskInstanceNote";
+import useUpstreamDatasetEvents from "./useUpstreamDatasetEvents";
+import useTaskInstance from "./useTaskInstance";
-axios.interceptors.response.use(
- (res: AxiosResponse) => (res.data ? camelcaseKeys(res.data, { deep: true }) : res),
+axios.interceptors.response.use((res: AxiosResponse) =>
+ res.data ? camelcaseKeys(res.data, { deep: true }) : res
);
-axios.defaults.headers.common.Accept = 'application/json';
+axios.defaults.headers.common.Accept = "application/json";
export {
useClearRun,
diff --git a/airflow/www/static/js/api/useClearRun.ts b/airflow/www/static/js/api/useClearRun.ts
index c7b32b79fb2a0..bc617290548e0 100644
--- a/airflow/www/static/js/api/useClearRun.ts
+++ b/airflow/www/static/js/api/useClearRun.ts
@@ -17,23 +17,23 @@
* under the License.
*/
-import axios, { AxiosResponse } from 'axios';
-import { useMutation, useQueryClient } from 'react-query';
+import axios, { AxiosResponse } from "axios";
+import { useMutation, useQueryClient } from "react-query";
-import URLSearchParamsWrapper from 'src/utils/URLSearchParamWrapper';
-import { getMetaValue } from 'src/utils';
-import { useAutoRefresh } from 'src/context/autorefresh';
-import useErrorToast from 'src/utils/useErrorToast';
+import URLSearchParamsWrapper from "src/utils/URLSearchParamWrapper";
+import { getMetaValue } from "src/utils";
+import { useAutoRefresh } from "src/context/autorefresh";
+import useErrorToast from "src/utils/useErrorToast";
-const csrfToken = getMetaValue('csrf_token');
-const clearRunUrl = getMetaValue('dagrun_clear_url');
+const csrfToken = getMetaValue("csrf_token");
+const clearRunUrl = getMetaValue("dagrun_clear_url");
export default function useClearRun(dagId: string, runId: string) {
const queryClient = useQueryClient();
const errorToast = useErrorToast();
const { startRefresh } = useAutoRefresh();
return useMutation(
- ['dagRunClear', dagId, runId],
+ ["dagRunClear", dagId, runId],
({ confirmed = false }: { confirmed: boolean }) => {
const params = new URLSearchParamsWrapper({
csrf_token: csrfToken,
@@ -44,18 +44,18 @@ export default function useClearRun(dagId: string, runId: string) {
return axios.post(clearRunUrl, params, {
headers: {
- 'Content-Type': 'application/x-www-form-urlencoded',
+ "Content-Type": "application/x-www-form-urlencoded",
},
});
},
{
onSuccess: (_, { confirmed }) => {
if (confirmed) {
- queryClient.invalidateQueries('gridData');
+ queryClient.invalidateQueries("gridData");
startRefresh();
}
},
onError: (error: Error) => errorToast({ error }),
- },
+ }
);
}
diff --git a/airflow/www/static/js/api/useClearTask.ts b/airflow/www/static/js/api/useClearTask.ts
index b6c10f1637e83..ebe3b14b28b73 100644
--- a/airflow/www/static/js/api/useClearTask.ts
+++ b/airflow/www/static/js/api/useClearTask.ts
@@ -17,39 +17,54 @@
* under the License.
*/
-import axios, { AxiosResponse } from 'axios';
-import { useMutation, useQueryClient } from 'react-query';
-import URLSearchParamsWrapper from 'src/utils/URLSearchParamWrapper';
-import { getMetaValue } from '../utils';
-import { useAutoRefresh } from '../context/autorefresh';
-import useErrorToast from '../utils/useErrorToast';
+import axios, { AxiosResponse } from "axios";
+import { useMutation, useQueryClient } from "react-query";
+import URLSearchParamsWrapper from "src/utils/URLSearchParamWrapper";
+import { getMetaValue } from "../utils";
+import { useAutoRefresh } from "../context/autorefresh";
+import useErrorToast from "../utils/useErrorToast";
-const csrfToken = getMetaValue('csrf_token');
-const clearUrl = getMetaValue('clear_url');
+const csrfToken = getMetaValue("csrf_token");
+const clearUrl = getMetaValue("clear_url");
export default function useClearTask({
- dagId, runId, taskId, executionDate, isGroup,
-}: { dagId: string,
- runId: string,
- taskId: string,
- executionDate: string,
- isGroup: boolean }) {
+ dagId,
+ runId,
+ taskId,
+ executionDate,
+ isGroup,
+}: {
+ dagId: string;
+ runId: string;
+ taskId: string;
+ executionDate: string;
+ isGroup: boolean;
+}) {
const queryClient = useQueryClient();
const errorToast = useErrorToast();
const { startRefresh } = useAutoRefresh();
return useMutation(
- ['clearTask', dagId, runId, taskId],
+ ["clearTask", dagId, runId, taskId],
({
- past, future, upstream, downstream, recursive, failed, confirmed, mapIndexes = [],
- }: { past: boolean,
- future: boolean,
- upstream: boolean,
- downstream: boolean,
- recursive: boolean,
- failed: boolean,
- confirmed: boolean,
- mapIndexes: number[] }) => {
+ past,
+ future,
+ upstream,
+ downstream,
+ recursive,
+ failed,
+ confirmed,
+ mapIndexes = [],
+ }: {
+ past: boolean;
+ future: boolean;
+ upstream: boolean;
+ downstream: boolean;
+ recursive: boolean;
+ failed: boolean;
+ confirmed: boolean;
+ mapIndexes: number[];
+ }) => {
const params = new URLSearchParamsWrapper({
csrf_token: csrfToken,
dag_id: dagId,
@@ -65,30 +80,35 @@ export default function useClearTask({
});
if (isGroup) {
- params.append('group_id', taskId);
+ params.append("group_id", taskId);
} else {
- params.append('task_id', taskId);
+ params.append("task_id", taskId);
}
mapIndexes.forEach((mi: number) => {
- params.append('map_index', mi.toString());
+ params.append("map_index", mi.toString());
});
return axios.post(clearUrl, params.toString(), {
headers: {
- 'Content-Type': 'application/x-www-form-urlencoded',
+ "Content-Type": "application/x-www-form-urlencoded",
},
});
},
{
onSuccess: (_, { confirmed }) => {
if (confirmed) {
- queryClient.invalidateQueries('gridData');
- queryClient.invalidateQueries(['mappedInstances', dagId, runId, taskId]);
+ queryClient.invalidateQueries("gridData");
+ queryClient.invalidateQueries([
+ "mappedInstances",
+ dagId,
+ runId,
+ taskId,
+ ]);
startRefresh();
}
},
onError: (error: Error) => errorToast({ error }),
- },
+ }
);
}
diff --git a/airflow/www/static/js/api/useConfirmMarkTask.ts b/airflow/www/static/js/api/useConfirmMarkTask.ts
index ba654798c4235..4e69875ffb650 100644
--- a/airflow/www/static/js/api/useConfirmMarkTask.ts
+++ b/airflow/www/static/js/api/useConfirmMarkTask.ts
@@ -17,29 +17,41 @@
* under the License.
*/
-import axios, { AxiosResponse } from 'axios';
-import { useMutation } from 'react-query';
-import type { TaskState } from 'src/types';
-import URLSearchParamsWrapper from 'src/utils/URLSearchParamWrapper';
-import { getMetaValue } from '../utils';
-import useErrorToast from '../utils/useErrorToast';
+import axios, { AxiosResponse } from "axios";
+import { useMutation } from "react-query";
+import type { TaskState } from "src/types";
+import URLSearchParamsWrapper from "src/utils/URLSearchParamWrapper";
+import { getMetaValue } from "../utils";
+import useErrorToast from "../utils/useErrorToast";
-const confirmUrl = getMetaValue('confirm_url');
+const confirmUrl = getMetaValue("confirm_url");
export default function useConfirmMarkTask({
- dagId, runId, taskId, state,
-}: { dagId: string, runId: string, taskId: string, state: TaskState }) {
+ dagId,
+ runId,
+ taskId,
+ state,
+}: {
+ dagId: string;
+ runId: string;
+ taskId: string;
+ state: TaskState;
+}) {
const errorToast = useErrorToast();
return useMutation(
- ['confirmStateChange', dagId, runId, taskId, state],
+ ["confirmStateChange", dagId, runId, taskId, state],
({
- past, future, upstream, downstream, mapIndexes = [],
+ past,
+ future,
+ upstream,
+ downstream,
+ mapIndexes = [],
}: {
- past: boolean,
- future: boolean,
- upstream: boolean,
- downstream: boolean,
- mapIndexes: number[],
+ past: boolean;
+ future: boolean;
+ upstream: boolean;
+ downstream: boolean;
+ mapIndexes: number[];
}) => {
const params = new URLSearchParamsWrapper({
dag_id: dagId,
@@ -53,12 +65,12 @@ export default function useConfirmMarkTask({
});
mapIndexes.forEach((mi: number) => {
- params.append('map_index', mi.toString());
+ params.append("map_index", mi.toString());
});
return axios.get(confirmUrl, { params });
},
{
onError: (error: Error) => errorToast({ error }),
- },
+ }
);
}
diff --git a/airflow/www/static/js/api/useDataset.ts b/airflow/www/static/js/api/useDataset.ts
index 4633b47242b88..4793464fac378 100644
--- a/airflow/www/static/js/api/useDataset.ts
+++ b/airflow/www/static/js/api/useDataset.ts
@@ -17,22 +17,22 @@
* under the License.
*/
-import axios, { AxiosResponse } from 'axios';
-import { useQuery } from 'react-query';
+import axios, { AxiosResponse } from "axios";
+import { useQuery } from "react-query";
-import { getMetaValue } from 'src/utils';
-import type { API } from 'src/types';
+import { getMetaValue } from "src/utils";
+import type { API } from "src/types";
interface Props {
uri: string;
}
export default function useDataset({ uri }: Props) {
- return useQuery(
- ['dataset', uri],
- () => {
- const datasetUrl = getMetaValue('dataset_api').replace('__URI__', encodeURIComponent(uri));
- return axios.get(datasetUrl);
- },
- );
+ return useQuery(["dataset", uri], () => {
+ const datasetUrl = getMetaValue("dataset_api").replace(
+ "__URI__",
+ encodeURIComponent(uri)
+ );
+ return axios.get(datasetUrl);
+ });
}
diff --git a/airflow/www/static/js/api/useDatasetDependencies.ts b/airflow/www/static/js/api/useDatasetDependencies.ts
index a4167c6f8fbdb..12e46c266bd57 100644
--- a/airflow/www/static/js/api/useDatasetDependencies.ts
+++ b/airflow/www/static/js/api/useDatasetDependencies.ts
@@ -17,13 +17,13 @@
* under the License.
*/
-import axios, { AxiosResponse } from 'axios';
-import { useQuery } from 'react-query';
-import ELK, { ElkShape, ElkExtendedEdge } from 'elkjs';
+import axios, { AxiosResponse } from "axios";
+import { useQuery } from "react-query";
+import ELK, { ElkShape, ElkExtendedEdge } from "elkjs";
-import { getMetaValue } from 'src/utils';
-import type { DepEdge, DepNode } from 'src/types';
-import type { NodeType } from 'src/datasets/Graph/Node';
+import { getMetaValue } from "src/utils";
+import type { DepEdge, DepNode } from "src/types";
+import type { NodeType } from "src/datasets/Graph/Node";
interface DatasetDependencies {
edges: DepEdge[];
@@ -52,7 +52,7 @@ interface Data {
// Take text and font to calculate how long each node should be
function getTextWidth(text: string, font: string) {
- const context = document.createElement('canvas').getContext('2d');
+ const context = document.createElement("canvas").getContext("2d");
if (context) {
context.font = font;
const metrics = context.measureText(text);
@@ -62,18 +62,18 @@ function getTextWidth(text: string, font: string) {
}
const generateGraph = ({ nodes, edges, font }: GenerateProps) => ({
- id: 'root',
+ id: "root",
layoutOptions: {
- 'spacing.nodeNodeBetweenLayers': '40.0',
- 'spacing.edgeNodeBetweenLayers': '10.0',
- 'layering.strategy': 'INTERACTIVE',
- algorithm: 'layered',
- 'crossingMinimization.semiInteractive': 'true',
- 'spacing.edgeEdgeBetweenLayers': '10.0',
- 'spacing.edgeNode': '10.0',
- 'spacing.edgeEdge': '10.0',
- 'spacing.nodeNode': '20.0',
- 'elk.direction': 'DOWN',
+ "spacing.nodeNodeBetweenLayers": "40.0",
+ "spacing.edgeNodeBetweenLayers": "10.0",
+ "layering.strategy": "INTERACTIVE",
+ algorithm: "layered",
+ "crossingMinimization.semiInteractive": "true",
+ "spacing.edgeEdgeBetweenLayers": "10.0",
+ "spacing.edgeNode": "10.0",
+ "spacing.edgeEdge": "10.0",
+ "spacing.nodeNode": "20.0",
+ "elk.direction": "DOWN",
},
children: nodes.map(({ id, value }) => ({
id,
@@ -82,7 +82,11 @@ const generateGraph = ({ nodes, edges, font }: GenerateProps) => ({
height: 40,
value,
})),
- edges: edges.map((e) => ({ id: `${e.source}-${e.target}`, sources: [e.source], targets: [e.target] })),
+ edges: edges.map((e) => ({
+ id: `${e.source}-${e.target}`,
+ sources: [e.source],
+ targets: [e.target],
+ })),
});
interface SeparateGraphsProps {
@@ -91,43 +95,49 @@ interface SeparateGraphsProps {
}
// find the downstream graph of each upstream edge
-const findDownstreamGraph = (
- { edges, graphs = [] }: SeparateGraphsProps,
-): EdgeGroup[] => {
+const findDownstreamGraph = ({
+ edges,
+ graphs = [],
+}: SeparateGraphsProps): EdgeGroup[] => {
let unassignedEdges = [...edges];
const mergedGraphs = graphs
- .reduce(
- (newGraphs, graph) => {
- const otherGroupIndex = newGraphs.findIndex(
- (otherGroup) => otherGroup.edges.some(
- (otherEdge) => graph.edges.some(
- (edge) => edge.target === otherEdge.target,
- ),
- ),
- );
- if (otherGroupIndex === -1) {
- return [...newGraphs, graph];
- }
-
- const mergedEdges = [...newGraphs[otherGroupIndex].edges, ...graph.edges]
- .filter((edge, edgeIndex, otherEdges) => (
- edgeIndex === otherEdges.findIndex(
- (otherEdge) => otherEdge.source === edge.source && otherEdge.target === edge.target,
- )
- ));
- return [
- ...newGraphs.filter((_, newGraphIndex) => newGraphIndex !== otherGroupIndex),
- { edges: mergedEdges },
- ];
- },
- [] as EdgeGroup[],
- )
+ .reduce((newGraphs, graph) => {
+ const otherGroupIndex = newGraphs.findIndex((otherGroup) =>
+ otherGroup.edges.some((otherEdge) =>
+ graph.edges.some((edge) => edge.target === otherEdge.target)
+ )
+ );
+ if (otherGroupIndex === -1) {
+ return [...newGraphs, graph];
+ }
+
+ const mergedEdges = [
+ ...newGraphs[otherGroupIndex].edges,
+ ...graph.edges,
+ ].filter(
+ (edge, edgeIndex, otherEdges) =>
+ edgeIndex ===
+ otherEdges.findIndex(
+ (otherEdge) =>
+ otherEdge.source === edge.source &&
+ otherEdge.target === edge.target
+ )
+ );
+ return [
+ ...newGraphs.filter(
+ (_, newGraphIndex) => newGraphIndex !== otherGroupIndex
+ ),
+ { edges: mergedEdges },
+ ];
+ }, [] as EdgeGroup[])
.map((graph) => {
// find the next set of downstream edges and filter them out of the unassigned edges list
const downstreamEdges: DepEdge[] = [];
unassignedEdges = unassignedEdges.filter((edge) => {
- const isDownstream = graph.edges.some((graphEdge) => graphEdge.target === edge.source);
+ const isDownstream = graph.edges.some(
+ (graphEdge) => graphEdge.target === edge.source
+ );
if (isDownstream) downstreamEdges.push(edge);
return !isDownstream;
});
@@ -144,7 +154,10 @@ const findDownstreamGraph = (
};
// separate the list of nodes/edges into distinct dataset pipeline graphs
-const separateGraphs = ({ edges, nodes }: DatasetDependencies): DatasetDependencies[] => {
+const separateGraphs = ({
+ edges,
+ nodes,
+}: DatasetDependencies): DatasetDependencies[] => {
const separatedGraphs: EdgeGroup[] = [];
const remainingEdges: DepEdge[] = [];
@@ -157,19 +170,20 @@ const separateGraphs = ({ edges, nodes }: DatasetDependencies): DatasetDependenc
}
});
- const edgeGraphs = findDownstreamGraph({ edges: remainingEdges, graphs: separatedGraphs });
+ const edgeGraphs = findDownstreamGraph({
+ edges: remainingEdges,
+ graphs: separatedGraphs,
+ });
// once all the edges are found, add the nodes
return edgeGraphs.map((eg) => {
- const graphNodes = nodes.filter(
- (n) => eg.edges.some(
- (e) => e.target === n.id || e.source === n.id,
- ),
+ const graphNodes = nodes.filter((n) =>
+ eg.edges.some((e) => e.target === n.id || e.source === n.id)
);
- return ({
+ return {
edges: eg.edges,
nodes: graphNodes,
- });
+ };
});
};
@@ -179,12 +193,16 @@ const formatDependencies = async ({ edges, nodes }: DatasetDependencies) => {
const graphs = separateGraphs({ edges, nodes });
// get computed style to calculate how large each node should be
- const font = `bold ${16}px ${window.getComputedStyle(document.body).fontFamily}`;
+ const font = `bold ${16}px ${
+ window.getComputedStyle(document.body).fontFamily
+ }`;
// Finally generate the graph data with elk
- const subGraphs = await Promise.all(graphs.map(async (g) => (
- elk.layout(generateGraph({ nodes: g.nodes, edges: g.edges, font }))
- )));
+ const subGraphs = await Promise.all(
+ graphs.map(async (g) =>
+ elk.layout(generateGraph({ nodes: g.nodes, edges: g.edges, font }))
+ )
+ );
const fullGraph = await elk.layout(generateGraph({ nodes, edges, font }));
return {
@@ -194,12 +212,11 @@ const formatDependencies = async ({ edges, nodes }: DatasetDependencies) => {
};
export default function useDatasetDependencies() {
- return useQuery(
- 'datasetDependencies',
- async () => {
- const datasetDepsUrl = getMetaValue('dataset_dependencies_url');
- const rawData = await axios.get(datasetDepsUrl);
- return formatDependencies(rawData);
- },
- );
+ return useQuery("datasetDependencies", async () => {
+ const datasetDepsUrl = getMetaValue("dataset_dependencies_url");
+ const rawData = await axios.get(
+ datasetDepsUrl
+ );
+ return formatDependencies(rawData);
+ });
}
diff --git a/airflow/www/static/js/api/useDatasetEvents.ts b/airflow/www/static/js/api/useDatasetEvents.ts
index b67423a0bad2f..8caccd202cae8 100644
--- a/airflow/www/static/js/api/useDatasetEvents.ts
+++ b/airflow/www/static/js/api/useDatasetEvents.ts
@@ -17,31 +17,49 @@
* under the License.
*/
-import axios, { AxiosResponse } from 'axios';
-import { useQuery } from 'react-query';
+import axios, { AxiosResponse } from "axios";
+import { useQuery } from "react-query";
-import { getMetaValue } from 'src/utils';
-import type { API } from 'src/types';
-import URLSearchParamsWrapper from 'src/utils/URLSearchParamWrapper';
+import { getMetaValue } from "src/utils";
+import type { API } from "src/types";
+import URLSearchParamsWrapper from "src/utils/URLSearchParamWrapper";
export default function useDatasetEvents({
- datasetId, sourceDagId, sourceRunId, sourceTaskId, sourceMapIndex, limit, offset, orderBy,
+ datasetId,
+ sourceDagId,
+ sourceRunId,
+ sourceTaskId,
+ sourceMapIndex,
+ limit,
+ offset,
+ orderBy,
}: API.GetDatasetEventsVariables) {
const query = useQuery(
- ['datasets-events', datasetId, sourceDagId, sourceRunId, sourceTaskId, sourceMapIndex, limit, offset, orderBy],
+ [
+ "datasets-events",
+ datasetId,
+ sourceDagId,
+ sourceRunId,
+ sourceTaskId,
+ sourceMapIndex,
+ limit,
+ offset,
+ orderBy,
+ ],
() => {
- const datasetsUrl = getMetaValue('dataset_events_api');
+ const datasetsUrl = getMetaValue("dataset_events_api");
const params = new URLSearchParamsWrapper();
- if (limit) params.set('limit', limit.toString());
- if (offset) params.set('offset', offset.toString());
- if (orderBy) params.set('order_by', orderBy);
- if (datasetId) params.set('dataset_id', datasetId.toString());
- if (sourceDagId) params.set('source_dag_id', sourceDagId);
- if (sourceRunId) params.set('source_run_id', sourceRunId);
- if (sourceTaskId) params.set('source_task_id', sourceTaskId);
- if (sourceMapIndex) params.set('source_map_index', sourceMapIndex.toString());
+ if (limit) params.set("limit", limit.toString());
+ if (offset) params.set("offset", offset.toString());
+ if (orderBy) params.set("order_by", orderBy);
+ if (datasetId) params.set("dataset_id", datasetId.toString());
+ if (sourceDagId) params.set("source_dag_id", sourceDagId);
+ if (sourceRunId) params.set("source_run_id", sourceRunId);
+ if (sourceTaskId) params.set("source_task_id", sourceTaskId);
+ if (sourceMapIndex)
+ params.set("source_map_index", sourceMapIndex.toString());
return axios.get(datasetsUrl, {
params,
@@ -49,7 +67,7 @@ export default function useDatasetEvents({
},
{
keepPreviousData: true,
- },
+ }
);
return {
...query,
diff --git a/airflow/www/static/js/api/useDatasets.ts b/airflow/www/static/js/api/useDatasets.ts
index 6c459a15b4243..379d3c3e61b2e 100644
--- a/airflow/www/static/js/api/useDatasets.ts
+++ b/airflow/www/static/js/api/useDatasets.ts
@@ -17,12 +17,12 @@
* under the License.
*/
-import axios, { AxiosResponse } from 'axios';
-import { useQuery } from 'react-query';
+import axios, { AxiosResponse } from "axios";
+import { useQuery } from "react-query";
-import { getMetaValue } from 'src/utils';
-import type { DatasetListItem } from 'src/types';
-import type { unitOfTime } from 'moment';
+import { getMetaValue } from "src/utils";
+import type { DatasetListItem } from "src/types";
+import type { unitOfTime } from "moment";
interface DatasetsData {
datasets: DatasetListItem[];
@@ -43,33 +43,39 @@ interface Props {
}
export default function useDatasets({
- limit, offset, order, uri, updatedAfter,
+ limit,
+ offset,
+ order,
+ uri,
+ updatedAfter,
}: Props) {
const query = useQuery(
- ['datasets', limit, offset, order, uri, updatedAfter],
+ ["datasets", limit, offset, order, uri, updatedAfter],
() => {
- const datasetsUrl = getMetaValue('datasets_api');
+ const datasetsUrl = getMetaValue("datasets_api");
const orderParam = order ? { order_by: order } : {};
const uriParam = uri ? { uri_pattern: uri } : {};
- const updatedAfterParam = updatedAfter && updatedAfter.count && updatedAfter.unit
- ? { updated_after: moment().subtract(updatedAfter.count, updatedAfter.unit).toISOString() }
- : {};
- return axios.get(
- datasetsUrl,
- {
- params: {
- offset,
- limit,
- ...orderParam,
- ...uriParam,
- ...updatedAfterParam,
- },
+ const updatedAfterParam =
+ updatedAfter && updatedAfter.count && updatedAfter.unit
+ ? {
+ updated_after: moment()
+ .subtract(updatedAfter.count, updatedAfter.unit)
+ .toISOString(),
+ }
+ : {};
+ return axios.get(datasetsUrl, {
+ params: {
+ offset,
+ limit,
+ ...orderParam,
+ ...uriParam,
+ ...updatedAfterParam,
},
- );
+ });
},
{
keepPreviousData: true,
- },
+ }
);
return {
...query,
diff --git a/airflow/www/static/js/api/useExtraLinks.ts b/airflow/www/static/js/api/useExtraLinks.ts
index 76fe4610bbf46..a76cb2540c1fd 100644
--- a/airflow/www/static/js/api/useExtraLinks.ts
+++ b/airflow/www/static/js/api/useExtraLinks.ts
@@ -17,11 +17,11 @@
* under the License.
*/
-import axios, { AxiosResponse } from 'axios';
-import { useQuery } from 'react-query';
-import { getMetaValue } from '../utils';
+import axios, { AxiosResponse } from "axios";
+import { useQuery } from "react-query";
+import { getMetaValue } from "../utils";
-const extraLinksUrl = getMetaValue('extra_links_url');
+const extraLinksUrl = getMetaValue("extra_links_url");
interface LinkData {
url: string | null;
@@ -29,19 +29,26 @@ interface LinkData {
}
export default function useExtraLinks({
- dagId, taskId, executionDate, extraLinks,
+ dagId,
+ taskId,
+ executionDate,
+ extraLinks,
}: {
- dagId: string, taskId: string, executionDate: string, extraLinks: string[],
+ dagId: string;
+ taskId: string;
+ executionDate: string;
+ extraLinks: string[];
}) {
- return useQuery(
- ['extraLinks', dagId, taskId, executionDate],
- async () => {
- const data = await Promise.all(extraLinks.map(async (link) => {
- const url = `${extraLinksUrl
- }?task_id=${encodeURIComponent(taskId)
- }&dag_id=${encodeURIComponent(dagId)
- }&execution_date=${encodeURIComponent(executionDate)
- }&link_name=${encodeURIComponent(link)}`;
+ return useQuery(["extraLinks", dagId, taskId, executionDate], async () => {
+ const data = await Promise.all(
+ extraLinks.map(async (link) => {
+ const url = `${extraLinksUrl}?task_id=${encodeURIComponent(
+ taskId
+ )}&dag_id=${encodeURIComponent(
+ dagId
+ )}&execution_date=${encodeURIComponent(
+ executionDate
+ )}&link_name=${encodeURIComponent(link)}`;
try {
const datum = await axios.get(url);
return {
@@ -52,11 +59,11 @@ export default function useExtraLinks({
console.error(e);
return {
name: link,
- url: '',
+ url: "",
};
}
- }));
- return data;
- },
- );
+ })
+ );
+ return data;
+ });
}
diff --git a/airflow/www/static/js/api/useGridData.test.ts b/airflow/www/static/js/api/useGridData.test.ts
index d84abf67e6963..929303efe1f5d 100644
--- a/airflow/www/static/js/api/useGridData.test.ts
+++ b/airflow/www/static/js/api/useGridData.test.ts
@@ -19,15 +19,15 @@
/* global describe, test, expect */
-import type { DagRun } from 'src/types';
-import { areActiveRuns } from './useGridData';
+import type { DagRun } from "src/types";
+import { areActiveRuns } from "./useGridData";
const commonDagRunParams = {
- runId: 'runId',
- executionDate: '2022-01-01T10:00+00:00',
- dataIntervalStart: '2022-01-01T05:00+00:00',
- dataIntervalEnd: '2022-01-01T10:00+00:00',
- runType: 'scheduled' as DagRun['runType'],
+ runId: "runId",
+ executionDate: "2022-01-01T10:00+00:00",
+ dataIntervalStart: "2022-01-01T05:00+00:00",
+ dataIntervalEnd: "2022-01-01T10:00+00:00",
+ runType: "scheduled" as DagRun["runType"],
queuedAt: null,
startDate: null,
endDate: null,
@@ -35,29 +35,29 @@ const commonDagRunParams = {
externalTrigger: false,
conf: null,
confIsJson: false,
- note: '',
+ note: "",
};
-describe('Test areActiveRuns()', () => {
- test('Correctly detects active runs', () => {
+describe("Test areActiveRuns()", () => {
+ test("Correctly detects active runs", () => {
const runs: DagRun[] = [
- { state: 'success', ...commonDagRunParams },
- { state: 'queued', ...commonDagRunParams },
+ { state: "success", ...commonDagRunParams },
+ { state: "queued", ...commonDagRunParams },
];
expect(areActiveRuns(runs)).toBe(true);
});
- test('Returns false when all runs are resolved', () => {
+ test("Returns false when all runs are resolved", () => {
const runs: DagRun[] = [
- { state: 'success', ...commonDagRunParams },
- { state: 'failed', ...commonDagRunParams },
- { state: 'failed', ...commonDagRunParams },
+ { state: "success", ...commonDagRunParams },
+ { state: "failed", ...commonDagRunParams },
+ { state: "failed", ...commonDagRunParams },
];
const result = areActiveRuns(runs);
expect(result).toBe(false);
});
- test('Returns false when there are no runs', () => {
+ test("Returns false when there are no runs", () => {
const result = areActiveRuns();
expect(result).toBe(false);
});
diff --git a/airflow/www/static/js/api/useGridData.ts b/airflow/www/static/js/api/useGridData.ts
index 091127fee2401..7be2e0d2cf714 100644
--- a/airflow/www/static/js/api/useGridData.ts
+++ b/airflow/www/static/js/api/useGridData.ts
@@ -17,24 +17,28 @@
* under the License.
*/
-import { useQuery } from 'react-query';
-import axios, { AxiosResponse } from 'axios';
+import { useQuery } from "react-query";
+import axios, { AxiosResponse } from "axios";
-import { getMetaValue } from 'src/utils';
-import { useAutoRefresh } from 'src/context/autorefresh';
-import useErrorToast from 'src/utils/useErrorToast';
+import { getMetaValue } from "src/utils";
+import { useAutoRefresh } from "src/context/autorefresh";
+import useErrorToast from "src/utils/useErrorToast";
import useFilters, {
- BASE_DATE_PARAM, NUM_RUNS_PARAM, RUN_STATE_PARAM, RUN_TYPE_PARAM, now,
-} from 'src/dag/useFilters';
-import type { Task, DagRun, RunOrdering } from 'src/types';
-import { camelCase } from 'lodash';
+ BASE_DATE_PARAM,
+ NUM_RUNS_PARAM,
+ RUN_STATE_PARAM,
+ RUN_TYPE_PARAM,
+ now,
+} from "src/dag/useFilters";
+import type { Task, DagRun, RunOrdering } from "src/types";
+import { camelCase } from "lodash";
-const DAG_ID_PARAM = 'dag_id';
+const DAG_ID_PARAM = "dag_id";
// dagId comes from dag.html
const dagId = getMetaValue(DAG_ID_PARAM);
-const gridDataUrl = getMetaValue('grid_data_url');
-const urlRoot = getMetaValue('root');
+const gridDataUrl = getMetaValue("grid_data_url");
+const urlRoot = getMetaValue("root");
export interface GridData {
dagRuns: DagRun[];
@@ -57,19 +61,18 @@ const formatOrdering = (data: GridData) => ({
ordering: data.ordering.map((o: string) => camelCase(o)) as RunOrdering,
});
-export const areActiveRuns = (runs: DagRun[] = []) => runs.filter((run) => ['queued', 'running'].includes(run.state)).length > 0;
+export const areActiveRuns = (runs: DagRun[] = []) =>
+ runs.filter((run) => ["queued", "running"].includes(run.state)).length > 0;
const useGridData = () => {
const { isRefreshOn, stopRefresh } = useAutoRefresh();
const errorToast = useErrorToast();
const {
- filters: {
- baseDate, numRuns, runType, runState,
- },
+ filters: { baseDate, numRuns, runType, runState },
} = useFilters();
const query = useQuery(
- ['gridData', baseDate, numRuns, runType, runState],
+ ["gridData", baseDate, numRuns, runType, runState],
async () => {
const params = {
root: urlRoot || undefined,
@@ -79,7 +82,9 @@ const useGridData = () => {
[RUN_TYPE_PARAM]: runType,
[RUN_STATE_PARAM]: runState,
};
- const response = await axios.get(gridDataUrl, { params });
+ const response = await axios.get(gridDataUrl, {
+ params,
+ });
// turn off auto refresh if there are no active runs
if (!areActiveRuns(response.dagRuns)) stopRefresh();
return response;
@@ -91,13 +96,13 @@ const useGridData = () => {
onError: (error: Error) => {
stopRefresh();
errorToast({
- title: 'Auto-refresh Error',
+ title: "Auto-refresh Error",
error,
});
- throw (error);
+ throw error;
},
select: formatOrdering,
- },
+ }
);
return {
...query,
diff --git a/airflow/www/static/js/api/useMappedInstances.ts b/airflow/www/static/js/api/useMappedInstances.ts
index c14557a03ad90..7a8c820113b04 100644
--- a/airflow/www/static/js/api/useMappedInstances.ts
+++ b/airflow/www/static/js/api/useMappedInstances.ts
@@ -17,32 +17,41 @@
* under the License.
*/
-import axios, { AxiosResponse } from 'axios';
-import { useQuery } from 'react-query';
+import axios, { AxiosResponse } from "axios";
+import { useQuery } from "react-query";
-import { getMetaValue } from 'src/utils';
-import { useAutoRefresh } from 'src/context/autorefresh';
-import type { API } from 'src/types';
+import { getMetaValue } from "src/utils";
+import { useAutoRefresh } from "src/context/autorefresh";
+import type { API } from "src/types";
-const mappedInstancesUrl = getMetaValue('mapped_instances_api');
+const mappedInstancesUrl = getMetaValue("mapped_instances_api");
export default function useMappedInstances({
- dagId, dagRunId, taskId, limit, offset, orderBy,
+ dagId,
+ dagRunId,
+ taskId,
+ limit,
+ offset,
+ orderBy,
}: API.GetMappedTaskInstancesVariables) {
- const url = mappedInstancesUrl.replace('_DAG_RUN_ID_', dagRunId).replace('_TASK_ID_', taskId);
- const orderParam = orderBy && orderBy !== 'map_index' ? { order_by: orderBy } : {};
+ const url = mappedInstancesUrl
+ .replace("_DAG_RUN_ID_", dagRunId)
+ .replace("_TASK_ID_", taskId);
+ const orderParam =
+ orderBy && orderBy !== "map_index" ? { order_by: orderBy } : {};
const { isRefreshOn } = useAutoRefresh();
return useQuery(
- ['mappedInstances', dagId, dagRunId, taskId, offset, orderBy],
- () => axios.get(url, {
- params: { offset, limit, ...orderParam },
- }),
+ ["mappedInstances", dagId, dagRunId, taskId, offset, orderBy],
+ () =>
+ axios.get(url, {
+ params: { offset, limit, ...orderParam },
+ }),
{
keepPreviousData: true,
initialData: { taskInstances: [], totalEntries: 0 },
refetchInterval: isRefreshOn && (autoRefreshInterval || 1) * 1000,
// staleTime should be similar to the refresh interval
staleTime: (autoRefreshInterval || 1) * 1000,
- },
+ }
);
}
diff --git a/airflow/www/static/js/api/useMarkFailedRun.ts b/airflow/www/static/js/api/useMarkFailedRun.ts
index e1b7f2a21efaa..11a94e4264da4 100644
--- a/airflow/www/static/js/api/useMarkFailedRun.ts
+++ b/airflow/www/static/js/api/useMarkFailedRun.ts
@@ -17,23 +17,23 @@
* under the License.
*/
-import axios, { AxiosResponse } from 'axios';
-import { useMutation, useQueryClient } from 'react-query';
+import axios, { AxiosResponse } from "axios";
+import { useMutation, useQueryClient } from "react-query";
-import URLSearchParamsWrapper from 'src/utils/URLSearchParamWrapper';
-import { getMetaValue } from 'src/utils';
-import { useAutoRefresh } from 'src/context/autorefresh';
-import useErrorToast from 'src/utils/useErrorToast';
+import URLSearchParamsWrapper from "src/utils/URLSearchParamWrapper";
+import { getMetaValue } from "src/utils";
+import { useAutoRefresh } from "src/context/autorefresh";
+import useErrorToast from "src/utils/useErrorToast";
-const csrfToken = getMetaValue('csrf_token');
-const markFailedUrl = getMetaValue('dagrun_failed_url');
+const csrfToken = getMetaValue("csrf_token");
+const markFailedUrl = getMetaValue("dagrun_failed_url");
export default function useMarkFailedRun(dagId: string, runId: string) {
const queryClient = useQueryClient();
const errorToast = useErrorToast();
const { startRefresh } = useAutoRefresh();
return useMutation(
- ['dagRunFailed', dagId, runId],
+ ["dagRunFailed", dagId, runId],
({ confirmed = false }: { confirmed: boolean }) => {
const params = new URLSearchParamsWrapper({
csrf_token: csrfToken,
@@ -44,18 +44,18 @@ export default function useMarkFailedRun(dagId: string, runId: string) {
return axios.post(markFailedUrl, params, {
headers: {
- 'Content-Type': 'application/x-www-form-urlencoded',
+ "Content-Type": "application/x-www-form-urlencoded",
},
});
},
{
onSuccess: (_, { confirmed }) => {
if (confirmed) {
- queryClient.invalidateQueries('gridData');
+ queryClient.invalidateQueries("gridData");
startRefresh();
}
},
onError: (error: Error) => errorToast({ error }),
- },
+ }
);
}
diff --git a/airflow/www/static/js/api/useMarkFailedTask.ts b/airflow/www/static/js/api/useMarkFailedTask.ts
index caac2fcd9d27b..23bbda60ab985 100644
--- a/airflow/www/static/js/api/useMarkFailedTask.ts
+++ b/airflow/www/static/js/api/useMarkFailedTask.ts
@@ -17,34 +17,42 @@
* under the License.
*/
-import axios from 'axios';
-import { useMutation, useQueryClient } from 'react-query';
-import URLSearchParamsWrapper from 'src/utils/URLSearchParamWrapper';
-import { getMetaValue } from '../utils';
-import { useAutoRefresh } from '../context/autorefresh';
-import useErrorToast from '../utils/useErrorToast';
+import axios from "axios";
+import { useMutation, useQueryClient } from "react-query";
+import URLSearchParamsWrapper from "src/utils/URLSearchParamWrapper";
+import { getMetaValue } from "../utils";
+import { useAutoRefresh } from "../context/autorefresh";
+import useErrorToast from "../utils/useErrorToast";
-const failedUrl = getMetaValue('failed_url');
-const csrfToken = getMetaValue('csrf_token');
+const failedUrl = getMetaValue("failed_url");
+const csrfToken = getMetaValue("csrf_token");
export default function useMarkFailedTask({
- dagId, runId, taskId,
+ dagId,
+ runId,
+ taskId,
}: {
- dagId: string, runId: string, taskId: string,
+ dagId: string;
+ runId: string;
+ taskId: string;
}) {
const queryClient = useQueryClient();
const errorToast = useErrorToast();
const { startRefresh } = useAutoRefresh();
return useMutation(
- ['markFailed', dagId, runId, taskId],
+ ["markFailed", dagId, runId, taskId],
({
- past, future, upstream, downstream, mapIndexes = [],
+ past,
+ future,
+ upstream,
+ downstream,
+ mapIndexes = [],
}: {
- past: boolean,
- future: boolean,
- upstream: boolean,
- downstream: boolean,
- mapIndexes: number[]
+ past: boolean;
+ future: boolean;
+ upstream: boolean;
+ downstream: boolean;
+ mapIndexes: number[];
}) => {
const params = new URLSearchParamsWrapper({
csrf_token: csrfToken,
@@ -59,22 +67,27 @@ export default function useMarkFailedTask({
});
mapIndexes.forEach((mi: number) => {
- params.append('map_index', mi.toString());
+ params.append("map_index", mi.toString());
});
return axios.post(failedUrl, params.toString(), {
headers: {
- 'Content-Type': 'application/x-www-form-urlencoded',
+ "Content-Type": "application/x-www-form-urlencoded",
},
});
},
{
onSuccess: () => {
- queryClient.invalidateQueries('gridData');
- queryClient.invalidateQueries(['mappedInstances', dagId, runId, taskId]);
+ queryClient.invalidateQueries("gridData");
+ queryClient.invalidateQueries([
+ "mappedInstances",
+ dagId,
+ runId,
+ taskId,
+ ]);
startRefresh();
},
onError: (error: Error) => errorToast({ error }),
- },
+ }
);
}
diff --git a/airflow/www/static/js/api/useMarkSuccessRun.ts b/airflow/www/static/js/api/useMarkSuccessRun.ts
index 545e42e9173bd..119fb29839d62 100644
--- a/airflow/www/static/js/api/useMarkSuccessRun.ts
+++ b/airflow/www/static/js/api/useMarkSuccessRun.ts
@@ -17,22 +17,22 @@
* under the License.
*/
-import axios, { AxiosResponse } from 'axios';
-import { useMutation, useQueryClient } from 'react-query';
-import URLSearchParamsWrapper from 'src/utils/URLSearchParamWrapper';
-import { getMetaValue } from '../utils';
-import { useAutoRefresh } from '../context/autorefresh';
-import useErrorToast from '../utils/useErrorToast';
+import axios, { AxiosResponse } from "axios";
+import { useMutation, useQueryClient } from "react-query";
+import URLSearchParamsWrapper from "src/utils/URLSearchParamWrapper";
+import { getMetaValue } from "../utils";
+import { useAutoRefresh } from "../context/autorefresh";
+import useErrorToast from "../utils/useErrorToast";
-const markSuccessUrl = getMetaValue('dagrun_success_url');
-const csrfToken = getMetaValue('csrf_token');
+const markSuccessUrl = getMetaValue("dagrun_success_url");
+const csrfToken = getMetaValue("csrf_token");
export default function useMarkSuccessRun(dagId: string, runId: string) {
const queryClient = useQueryClient();
const errorToast = useErrorToast();
const { startRefresh } = useAutoRefresh();
return useMutation(
- ['dagRunSuccess', dagId, runId],
+ ["dagRunSuccess", dagId, runId],
({ confirmed = false }: { confirmed: boolean }) => {
const params = new URLSearchParamsWrapper({
csrf_token: csrfToken,
@@ -43,18 +43,18 @@ export default function useMarkSuccessRun(dagId: string, runId: string) {
return axios.post(markSuccessUrl, params, {
headers: {
- 'Content-Type': 'application/x-www-form-urlencoded',
+ "Content-Type": "application/x-www-form-urlencoded",
},
});
},
{
onSuccess: (_, { confirmed }) => {
if (confirmed) {
- queryClient.invalidateQueries('gridData');
+ queryClient.invalidateQueries("gridData");
startRefresh();
}
},
onError: (error: Error) => errorToast({ error }),
- },
+ }
);
}
diff --git a/airflow/www/static/js/api/useMarkSuccessTask.ts b/airflow/www/static/js/api/useMarkSuccessTask.ts
index 8120b58edfa63..2605a92526bb7 100644
--- a/airflow/www/static/js/api/useMarkSuccessTask.ts
+++ b/airflow/www/static/js/api/useMarkSuccessTask.ts
@@ -17,34 +17,42 @@
* under the License.
*/
-import axios from 'axios';
-import { useMutation, useQueryClient } from 'react-query';
-import URLSearchParamsWrapper from 'src/utils/URLSearchParamWrapper';
-import { getMetaValue } from '../utils';
-import { useAutoRefresh } from '../context/autorefresh';
-import useErrorToast from '../utils/useErrorToast';
+import axios from "axios";
+import { useMutation, useQueryClient } from "react-query";
+import URLSearchParamsWrapper from "src/utils/URLSearchParamWrapper";
+import { getMetaValue } from "../utils";
+import { useAutoRefresh } from "../context/autorefresh";
+import useErrorToast from "../utils/useErrorToast";
-const csrfToken = getMetaValue('csrf_token');
-const successUrl = getMetaValue('success_url');
+const csrfToken = getMetaValue("csrf_token");
+const successUrl = getMetaValue("success_url");
export default function useMarkSuccessTask({
- dagId, runId, taskId,
+ dagId,
+ runId,
+ taskId,
}: {
- dagId: string, runId: string, taskId: string,
+ dagId: string;
+ runId: string;
+ taskId: string;
}) {
const queryClient = useQueryClient();
const errorToast = useErrorToast();
const { startRefresh } = useAutoRefresh();
return useMutation(
- ['markSuccess', dagId, runId, taskId],
+ ["markSuccess", dagId, runId, taskId],
({
- past, future, upstream, downstream, mapIndexes = [],
+ past,
+ future,
+ upstream,
+ downstream,
+ mapIndexes = [],
}: {
- past: boolean,
- future: boolean,
- upstream: boolean,
- downstream: boolean,
- mapIndexes: number[]
+ past: boolean;
+ future: boolean;
+ upstream: boolean;
+ downstream: boolean;
+ mapIndexes: number[];
}) => {
const params = new URLSearchParamsWrapper({
csrf_token: csrfToken,
@@ -59,22 +67,27 @@ export default function useMarkSuccessTask({
});
mapIndexes.forEach((mi: number) => {
- params.append('map_index', mi.toString());
+ params.append("map_index", mi.toString());
});
return axios.post(successUrl, params.toString(), {
headers: {
- 'Content-Type': 'application/x-www-form-urlencoded',
+ "Content-Type": "application/x-www-form-urlencoded",
},
});
},
{
onSuccess: () => {
- queryClient.invalidateQueries('gridData');
- queryClient.invalidateQueries(['mappedInstances', dagId, runId, taskId]);
+ queryClient.invalidateQueries("gridData");
+ queryClient.invalidateQueries([
+ "mappedInstances",
+ dagId,
+ runId,
+ taskId,
+ ]);
startRefresh();
},
onError: (error: Error) => errorToast({ error }),
- },
+ }
);
}
diff --git a/airflow/www/static/js/api/useQueueRun.ts b/airflow/www/static/js/api/useQueueRun.ts
index 6438d2856874e..28157a1879ea2 100644
--- a/airflow/www/static/js/api/useQueueRun.ts
+++ b/airflow/www/static/js/api/useQueueRun.ts
@@ -17,22 +17,22 @@
* under the License.
*/
-import axios, { AxiosResponse } from 'axios';
-import { useMutation, useQueryClient } from 'react-query';
-import URLSearchParamsWrapper from 'src/utils/URLSearchParamWrapper';
-import { getMetaValue } from '../utils';
-import { useAutoRefresh } from '../context/autorefresh';
-import useErrorToast from '../utils/useErrorToast';
+import axios, { AxiosResponse } from "axios";
+import { useMutation, useQueryClient } from "react-query";
+import URLSearchParamsWrapper from "src/utils/URLSearchParamWrapper";
+import { getMetaValue } from "../utils";
+import { useAutoRefresh } from "../context/autorefresh";
+import useErrorToast from "../utils/useErrorToast";
-const csrfToken = getMetaValue('csrf_token');
-const queuedUrl = getMetaValue('dagrun_queued_url');
+const csrfToken = getMetaValue("csrf_token");
+const queuedUrl = getMetaValue("dagrun_queued_url");
export default function useQueueRun(dagId: string, runId: string) {
const queryClient = useQueryClient();
const errorToast = useErrorToast();
const { startRefresh } = useAutoRefresh();
return useMutation(
- ['dagRunQueue', dagId, runId],
+ ["dagRunQueue", dagId, runId],
({ confirmed = false }: { confirmed: boolean }) => {
const params = new URLSearchParamsWrapper({
csrf_token: csrfToken,
@@ -42,18 +42,18 @@ export default function useQueueRun(dagId: string, runId: string) {
}).toString();
return axios.post(queuedUrl, params, {
headers: {
- 'Content-Type': 'application/x-www-form-urlencoded',
+ "Content-Type": "application/x-www-form-urlencoded",
},
});
},
{
onSuccess: (_, { confirmed }) => {
if (confirmed) {
- queryClient.invalidateQueries('gridData');
+ queryClient.invalidateQueries("gridData");
startRefresh();
}
},
onError: (error: Error) => errorToast({ error }),
- },
+ }
);
}
diff --git a/airflow/www/static/js/api/useSetDagRunNote.ts b/airflow/www/static/js/api/useSetDagRunNote.ts
index 927adb0ae2b93..7f561d47feede 100644
--- a/airflow/www/static/js/api/useSetDagRunNote.ts
+++ b/airflow/www/static/js/api/useSetDagRunNote.ts
@@ -17,51 +17,50 @@
* under the License.
*/
-import axios, { AxiosResponse } from 'axios';
-import { useMutation, useQueryClient } from 'react-query';
+import axios, { AxiosResponse } from "axios";
+import { useMutation, useQueryClient } from "react-query";
-import { getMetaValue } from 'src/utils';
-import type { API } from 'src/types';
-import useErrorToast from 'src/utils/useErrorToast';
+import { getMetaValue } from "src/utils";
+import type { API } from "src/types";
+import useErrorToast from "src/utils/useErrorToast";
-import { emptyGridData } from './useGridData';
-import type { GridData } from './useGridData';
+import { emptyGridData } from "./useGridData";
+import type { GridData } from "./useGridData";
-const setDagRunNoteURI = getMetaValue('set_dag_run_note');
+const setDagRunNoteURI = getMetaValue("set_dag_run_note");
interface Props {
dagId: string;
runId: string;
}
-export default function useSetDagRunNote({
- dagId, runId,
-}: Props) {
+export default function useSetDagRunNote({ dagId, runId }: Props) {
const queryClient = useQueryClient();
const errorToast = useErrorToast();
- const setDagRunNote = setDagRunNoteURI.replace('_DAG_RUN_ID_', runId);
+ const setDagRunNote = setDagRunNoteURI.replace("_DAG_RUN_ID_", runId);
return useMutation(
- ['setDagRunNote', dagId, runId],
- (note: string | null) => axios.patch(setDagRunNote, { note }),
+ ["setDagRunNote", dagId, runId],
+ (note: string | null) =>
+ axios.patch(setDagRunNote, { note }),
{
onSuccess: async (data) => {
const note = data.note ?? null;
- const updateGridData = (oldGridData: GridData | undefined) => (
+ const updateGridData = (oldGridData: GridData | undefined) =>
!oldGridData
? emptyGridData
: {
- ...oldGridData,
- dagRuns: oldGridData.dagRuns.map((dr) => (
- dr.runId === runId ? { ...dr, note } : dr)),
- }
- );
+ ...oldGridData,
+ dagRuns: oldGridData.dagRuns.map((dr) =>
+ dr.runId === runId ? { ...dr, note } : dr
+ ),
+ };
- await queryClient.cancelQueries('gridData');
- queryClient.setQueriesData('gridData', updateGridData);
+ await queryClient.cancelQueries("gridData");
+ queryClient.setQueriesData("gridData", updateGridData);
},
onError: (error: Error) => errorToast({ error }),
- },
+ }
);
}
diff --git a/airflow/www/static/js/api/useSetTaskInstanceNote.ts b/airflow/www/static/js/api/useSetTaskInstanceNote.ts
index d35cedd6963b1..caca6c28065ab 100644
--- a/airflow/www/static/js/api/useSetTaskInstanceNote.ts
+++ b/airflow/www/static/js/api/useSetTaskInstanceNote.ts
@@ -17,16 +17,18 @@
* under the License.
*/
-import axios, { AxiosResponse } from 'axios';
-import { useMutation, useQueryClient } from 'react-query';
+import axios, { AxiosResponse } from "axios";
+import { useMutation, useQueryClient } from "react-query";
-import { getMetaValue } from 'src/utils';
-import useErrorToast from 'src/utils/useErrorToast';
+import { getMetaValue } from "src/utils";
+import useErrorToast from "src/utils/useErrorToast";
-import type { API } from 'src/types';
+import type { API } from "src/types";
-const setTaskInstancesNoteURI = getMetaValue('set_task_instance_note');
-const setMappedTaskInstancesNoteURI = getMetaValue('set_mapped_task_instance_note');
+const setTaskInstancesNoteURI = getMetaValue("set_task_instance_note");
+const setMappedTaskInstancesNoteURI = getMetaValue(
+ "set_mapped_task_instance_note"
+);
interface Props {
dagId: string;
@@ -36,26 +38,34 @@ interface Props {
}
export default function useSetTaskInstanceNote({
- dagId, runId, taskId, mapIndex = -1,
+ dagId,
+ runId,
+ taskId,
+ mapIndex = -1,
}: Props) {
const queryClient = useQueryClient();
const errorToast = useErrorToast();
// Note: Werkzeug does not like the META URL on dag.html with an integer. It can not put
// _MAP_INDEX_ there as it interprets that as the integer. Hence, we pass 0 as the integer.
// To avoid we replace other stuff, we add the surrounding strings to the replacement query.
- const url = (mapIndex >= 0 ? setMappedTaskInstancesNoteURI : setTaskInstancesNoteURI)
- .replace('_DAG_RUN_ID_', runId)
- .replace('_TASK_ID_/0/setNote', `_TASK_ID_/${mapIndex}/setNote`)
- .replace('_TASK_ID_', taskId);
+ const url = (
+ mapIndex >= 0 ? setMappedTaskInstancesNoteURI : setTaskInstancesNoteURI
+ )
+ .replace("_DAG_RUN_ID_", runId)
+ .replace("_TASK_ID_/0/setNote", `_TASK_ID_/${mapIndex}/setNote`)
+ .replace("_TASK_ID_", taskId);
return useMutation(
- ['setTaskInstanceNotes', dagId, runId, taskId, mapIndex],
- (note: string | null) => axios.patch(url, { note }),
+ ["setTaskInstanceNotes", dagId, runId, taskId, mapIndex],
+ (note: string | null) =>
+ axios.patch(url, { note }),
{
onSuccess: async (data) => {
const note = data.note ?? null;
- const updateMappedInstancesResult = (oldMappedInstances?: API.TaskInstanceCollection) => {
+ const updateMappedInstancesResult = (
+ oldMappedInstances?: API.TaskInstanceCollection
+ ) => {
if (!oldMappedInstances) {
return {
taskInstances: [],
@@ -65,23 +75,25 @@ export default function useSetTaskInstanceNote({
if (mapIndex === undefined || mapIndex < 0) return oldMappedInstances;
return {
...oldMappedInstances,
- taskInstances: oldMappedInstances.taskInstances?.map((ti) => (
- ti.dagRunId === runId && ti.taskId === taskId && ti.mapIndex === mapIndex
+ taskInstances: oldMappedInstances.taskInstances?.map((ti) =>
+ ti.dagRunId === runId &&
+ ti.taskId === taskId &&
+ ti.mapIndex === mapIndex
? { ...ti, note }
: ti
- )),
+ ),
};
};
- const updateTaskInstanceResult = (oldTaskInstance?: API.TaskInstance) => {
- if (!oldTaskInstance) throw new Error('Unknown value...');
+ const updateTaskInstanceResult = (
+ oldTaskInstance?: API.TaskInstance
+ ) => {
+ if (!oldTaskInstance) throw new Error("Unknown value...");
if (
- oldTaskInstance.dagRunId === runId
- && oldTaskInstance.taskId === taskId
- && (
- (oldTaskInstance.mapIndex == null && mapIndex < 0)
- || oldTaskInstance.mapIndex === mapIndex
- )
+ oldTaskInstance.dagRunId === runId &&
+ oldTaskInstance.taskId === taskId &&
+ ((oldTaskInstance.mapIndex == null && mapIndex < 0) ||
+ oldTaskInstance.mapIndex === mapIndex)
) {
return {
...oldTaskInstance,
@@ -95,20 +107,23 @@ export default function useSetTaskInstanceNote({
Mutating the nested object is quite complicated,
we should simplify the gridData API object first
*/
- await queryClient.invalidateQueries('gridData');
+ await queryClient.invalidateQueries("gridData");
if (mapIndex >= 0) {
- await queryClient.cancelQueries('mappedInstances');
- queryClient.setQueriesData('mappedInstances', updateMappedInstancesResult);
+ await queryClient.cancelQueries("mappedInstances");
+ queryClient.setQueriesData(
+ "mappedInstances",
+ updateMappedInstancesResult
+ );
}
- await queryClient.cancelQueries('taskInstance');
+ await queryClient.cancelQueries("taskInstance");
queryClient.setQueriesData(
- ['taskInstance', dagId, runId, taskId, mapIndex],
- updateTaskInstanceResult,
+ ["taskInstance", dagId, runId, taskId, mapIndex],
+ updateTaskInstanceResult
);
},
onError: (error: Error) => errorToast({ error }),
- },
+ }
);
}
diff --git a/airflow/www/static/js/api/useTaskInstance.ts b/airflow/www/static/js/api/useTaskInstance.ts
index 3a7f5419e933c..2b2818bc217e2 100644
--- a/airflow/www/static/js/api/useTaskInstance.ts
+++ b/airflow/www/static/js/api/useTaskInstance.ts
@@ -17,35 +17,40 @@
* under the License.
*/
-import axios, { AxiosResponse } from 'axios';
-import type { API, TaskInstance } from 'src/types';
-import { useQuery } from 'react-query';
-import { useAutoRefresh } from 'src/context/autorefresh';
+import axios, { AxiosResponse } from "axios";
+import type { API, TaskInstance } from "src/types";
+import { useQuery } from "react-query";
+import { useAutoRefresh } from "src/context/autorefresh";
-import { getMetaValue } from 'src/utils';
-import type { SetOptional } from 'type-fest';
+import { getMetaValue } from "src/utils";
+import type { SetOptional } from "type-fest";
/* GridData.TaskInstance and API.TaskInstance are not compatible at the moment.
* Remove this function when changing the api response for grid_data_url to comply
* with API.TaskInstance.
*/
-const convertTaskInstance = (
- ti:
- API.TaskInstance,
-) => ({ ...ti, runId: ti.dagRunId }) as TaskInstance;
+const convertTaskInstance = (ti: API.TaskInstance) =>
+ ({ ...ti, runId: ti.dagRunId } as TaskInstance);
-const taskInstanceApi = getMetaValue('task_instance_api');
+const taskInstanceApi = getMetaValue("task_instance_api");
-interface Props extends SetOptional {
+interface Props
+ extends SetOptional {
enabled: boolean;
}
const useTaskInstance = ({
- dagId, dagRunId, taskId, mapIndex, enabled,
+ dagId,
+ dagRunId,
+ taskId,
+ mapIndex,
+ enabled,
}: Props) => {
- let url: string = '';
+ let url: string = "";
if (taskInstanceApi) {
- url = taskInstanceApi.replace('_DAG_RUN_ID_', dagRunId).replace('_TASK_ID_', taskId || '');
+ url = taskInstanceApi
+ .replace("_DAG_RUN_ID_", dagRunId)
+ .replace("_TASK_ID_", taskId || "");
}
if (mapIndex !== undefined && mapIndex >= 0) {
@@ -55,14 +60,17 @@ const useTaskInstance = ({
const { isRefreshOn } = useAutoRefresh();
return useQuery(
- ['taskInstance', dagId, dagRunId, taskId, mapIndex],
- () => axios.get(url, { headers: { Accept: 'text/plain' } }),
+ ["taskInstance", dagId, dagRunId, taskId, mapIndex],
+ () =>
+ axios.get(url, {
+ headers: { Accept: "text/plain" },
+ }),
{
placeholderData: {},
refetchInterval: isRefreshOn && (autoRefreshInterval || 1) * 1000,
enabled,
select: convertTaskInstance,
- },
+ }
);
};
diff --git a/airflow/www/static/js/api/useTaskLog.ts b/airflow/www/static/js/api/useTaskLog.ts
index 53e0e57ca4add..fb8c6ee727071 100644
--- a/airflow/www/static/js/api/useTaskLog.ts
+++ b/airflow/www/static/js/api/useTaskLog.ts
@@ -17,59 +17,67 @@
* under the License.
*/
-import { useState } from 'react';
-import axios, { AxiosResponse } from 'axios';
-import { useQuery } from 'react-query';
-import { useAutoRefresh } from 'src/context/autorefresh';
-import type { API, TaskInstance } from 'src/types';
+import { useState } from "react";
+import axios, { AxiosResponse } from "axios";
+import { useQuery } from "react-query";
+import { useAutoRefresh } from "src/context/autorefresh";
+import type { API, TaskInstance } from "src/types";
-import { getMetaValue } from 'src/utils';
+import { getMetaValue } from "src/utils";
-const taskLogApi = getMetaValue('task_log_api');
+const taskLogApi = getMetaValue("task_log_api");
interface Props extends API.GetLogVariables {
- state?: TaskInstance['state'];
+ state?: TaskInstance["state"];
}
const useTaskLog = ({
- dagId, dagRunId, taskId, taskTryNumber, mapIndex, fullContent = false, state,
+ dagId,
+ dagRunId,
+ taskId,
+ taskTryNumber,
+ mapIndex,
+ fullContent = false,
+ state,
}: Props) => {
- let url: string = '';
+ let url: string = "";
const [isPreviousStatePending, setPrevState] = useState(true);
if (taskLogApi) {
- url = taskLogApi.replace('_DAG_RUN_ID_', dagRunId).replace('_TASK_ID_', taskId).replace(/-1$/, taskTryNumber.toString());
+ url = taskLogApi
+ .replace("_DAG_RUN_ID_", dagRunId)
+ .replace("_TASK_ID_", taskId)
+ .replace(/-1$/, taskTryNumber.toString());
}
const { isRefreshOn } = useAutoRefresh();
// Only refresh is the state is pending
- const isStatePending = state === 'deferred'
- || state === 'scheduled'
- || state === 'running'
- || state === 'up_for_reschedule'
- || state === 'up_for_retry'
- || state === 'queued'
- || state === 'restarting';
+ const isStatePending =
+ state === "deferred" ||
+ state === "scheduled" ||
+ state === "running" ||
+ state === "up_for_reschedule" ||
+ state === "up_for_retry" ||
+ state === "queued" ||
+ state === "restarting";
// We also want to get the last log when the task was finished
const expectingLogs = isStatePending || isPreviousStatePending;
return useQuery(
- ['taskLogs', dagId, dagRunId, taskId, mapIndex, taskTryNumber, fullContent],
+ ["taskLogs", dagId, dagRunId, taskId, mapIndex, taskTryNumber, fullContent],
() => {
setPrevState(isStatePending);
- return axios.get(
- url,
- {
- headers: { Accept: 'text/plain' },
- params: { map_index: mapIndex, full_content: fullContent },
- },
- );
+ return axios.get(url, {
+ headers: { Accept: "text/plain" },
+ params: { map_index: mapIndex, full_content: fullContent },
+ });
},
{
- placeholderData: '',
- refetchInterval: expectingLogs && isRefreshOn && (autoRefreshInterval || 1) * 1000,
- },
+ placeholderData: "",
+ refetchInterval:
+ expectingLogs && isRefreshOn && (autoRefreshInterval || 1) * 1000,
+ }
);
};
diff --git a/airflow/www/static/js/api/useUpstreamDatasetEvents.ts b/airflow/www/static/js/api/useUpstreamDatasetEvents.ts
index 4fa1b765175fb..995941613cfde 100644
--- a/airflow/www/static/js/api/useUpstreamDatasetEvents.ts
+++ b/airflow/www/static/js/api/useUpstreamDatasetEvents.ts
@@ -17,28 +17,27 @@
* under the License.
*/
-import axios, { AxiosResponse } from 'axios';
-import { useQuery } from 'react-query';
+import axios, { AxiosResponse } from "axios";
+import { useQuery } from "react-query";
-import { getMetaValue } from 'src/utils';
-import type { API } from 'src/types';
+import { getMetaValue } from "src/utils";
+import type { API } from "src/types";
interface Props {
runId: string;
}
export default function useUpstreamDatasetEvents({ runId }: Props) {
- const query = useQuery(
- ['upstreamDatasetEvents', runId],
- () => {
- const dagId = getMetaValue('dag_id');
- const upstreamEventsUrl = (
- getMetaValue('upstream_dataset_events_api')
- || `api/v1/dags/${dagId}/dagRuns/_DAG_RUN_ID_/upstreamDatasetEvents`
- ).replace('_DAG_RUN_ID_', runId);
- return axios.get(upstreamEventsUrl);
- },
- );
+ const query = useQuery(["upstreamDatasetEvents", runId], () => {
+ const dagId = getMetaValue("dag_id");
+ const upstreamEventsUrl = (
+ getMetaValue("upstream_dataset_events_api") ||
+ `api/v1/dags/${dagId}/dagRuns/_DAG_RUN_ID_/upstreamDatasetEvents`
+ ).replace("_DAG_RUN_ID_", runId);
+ return axios.get(
+ upstreamEventsUrl
+ );
+ });
return {
...query,
data: query.data || { datasetEvents: [], totalEntries: 0 },
diff --git a/airflow/www/static/js/calendar.js b/airflow/www/static/js/calendar.js
index bb4b6e73cf194..330bd47344337 100644
--- a/airflow/www/static/js/calendar.js
+++ b/airflow/www/static/js/calendar.js
@@ -18,9 +18,9 @@
*/
/* global calendarData, statesColors, document, window, $, d3, moment */
-import { getMetaValue } from './utils';
+import { getMetaValue } from "./utils";
-const gridUrl = getMetaValue('grid_url');
+const gridUrl = getMetaValue("grid_url");
function getGridViewURL(d) {
return `${gridUrl}?base_date=${encodeURIComponent(d.toISOString())}`;
@@ -28,7 +28,7 @@ function getGridViewURL(d) {
// date helpers
function formatDay(d) {
- return ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'][d];
+ return ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"][d];
}
function toMoment(y, m, d) {
@@ -48,7 +48,7 @@ function weekOfYear(y, m) {
}
function daysInMonth(y, m) {
- const lastDay = toMoment(y, m, 1).add(1, 'month').subtract(1, 'day');
+ const lastDay = toMoment(y, m, 1).add(1, "month").subtract(1, "day");
return lastDay.date();
}
@@ -58,16 +58,17 @@ function weeksInMonth(y, m) {
return Math.floor((daysInMonth(y, m) + monthOffset) / 7) + 1;
}
-const dateFormat = 'YYYY-MM-DD';
+const dateFormat = "YYYY-MM-DD";
-document.addEventListener('DOMContentLoaded', () => {
- $('span.status_square').tooltip({ html: true });
+document.addEventListener("DOMContentLoaded", () => {
+ $("span.status_square").tooltip({ html: true });
// JSON.parse is faster for large payloads than an object literal
const rootData = JSON.parse(calendarData);
- const dayTip = d3.tip()
- .attr('class', 'tooltip d3-tip')
+ const dayTip = d3
+ .tip()
+ .attr("class", "tooltip d3-tip")
.html((toolTipHtml) => toolTipHtml);
// draw the calendar
@@ -112,140 +113,165 @@ document.addEventListener('DOMContentLoaded', () => {
.sort((data) => data.year);
// root SVG element
- const fullWidth = (
- leftRightMargin * 2 + yearLabelWidth + dayLabelWidth
- + maxWeeksInYear * cellSize
- );
- const yearsHeight = (yearHeight + yearPadding) * dagStates.length + yearPadding;
+ const fullWidth =
+ leftRightMargin * 2 +
+ yearLabelWidth +
+ dayLabelWidth +
+ maxWeeksInYear * cellSize;
+ const yearsHeight =
+ (yearHeight + yearPadding) * dagStates.length + yearPadding;
const fullHeight = titleHeight + legendHeight + yearsHeight;
const svg = d3
- .select('#calendar-svg')
- .attr('width', fullWidth)
- .attr('height', fullHeight)
+ .select("#calendar-svg")
+ .attr("width", fullWidth)
+ .attr("height", fullHeight)
.call(dayTip);
// Add the legend
const legend = svg
- .append('g')
- .attr('transform', `translate(0, ${titleHeight + legendHeight / 2})`);
+ .append("g")
+ .attr("transform", `translate(0, ${titleHeight + legendHeight / 2})`);
let legendXOffset = fullWidth - leftRightMargin;
- function drawLegend(rightState, leftState, numSwatches = 1, swatchesWidth = cellSize) {
+ function drawLegend(
+ rightState,
+ leftState,
+ numSwatches = 1,
+ swatchesWidth = cellSize
+ ) {
const startColor = statesColors[leftState || rightState];
const endColor = statesColors[rightState];
legendXOffset -= legendSwtchesTextWidth;
legend
- .append('text')
- .attr('x', legendXOffset)
- .attr('y', cellSize / 2)
- .attr('text-anchor', 'start')
- .attr('class', 'status-label')
- .attr('alignment-baseline', 'middle')
+ .append("text")
+ .attr("x", legendXOffset)
+ .attr("y", cellSize / 2)
+ .attr("text-anchor", "start")
+ .attr("class", "status-label")
+ .attr("alignment-baseline", "middle")
.text(rightState);
legendXOffset -= legendSwatchesPadding;
legendXOffset -= swatchesWidth;
legend
- .append('g')
- .attr('transform', `translate(${legendXOffset}, 0)`)
- .selectAll('g')
+ .append("g")
+ .attr("transform", `translate(${legendXOffset}, 0)`)
+ .selectAll("g")
.data(d3.range(numSwatches))
.enter()
- .append('rect')
- .attr('x', (v) => v * (swatchesWidth / numSwatches))
- .attr('width', swatchesWidth / numSwatches)
- .attr('height', cellSize)
- .attr('class', 'day')
- .attr('fill', (v) => (startColor.startsWith('url') ? startColor : d3.interpolateHsl(startColor, endColor)(v / numSwatches)));
+ .append("rect")
+ .attr("x", (v) => v * (swatchesWidth / numSwatches))
+ .attr("width", swatchesWidth / numSwatches)
+ .attr("height", cellSize)
+ .attr("class", "day")
+ .attr("fill", (v) =>
+ startColor.startsWith("url")
+ ? startColor
+ : d3.interpolateHsl(startColor, endColor)(v / numSwatches)
+ );
legendXOffset -= legendSwatchesPadding;
if (leftState !== undefined) {
legend
- .append('text')
- .attr('x', legendXOffset)
- .attr('y', cellSize / 2)
- .attr('text-anchor', 'end')
- .attr('class', 'status-label')
- .attr('alignment-baseline', 'middle')
+ .append("text")
+ .attr("x", legendXOffset)
+ .attr("y", cellSize / 2)
+ .attr("text-anchor", "end")
+ .attr("class", "status-label")
+ .attr("alignment-baseline", "middle")
.text(leftState);
legendXOffset -= legendSwtchesTextWidth;
}
}
- drawLegend('no_status');
- drawLegend('planned');
- drawLegend('running');
- drawLegend('failed', 'success', 10, 100);
+ drawLegend("no_status");
+ drawLegend("planned");
+ drawLegend("running");
+ drawLegend("failed", "success", 10, 100);
// Add the years groups, each holding one year of data.
const years = svg
- .append('g')
- .attr('transform', `translate(${leftRightMargin}, ${titleHeight + legendHeight})`);
+ .append("g")
+ .attr(
+ "transform",
+ `translate(${leftRightMargin}, ${titleHeight + legendHeight})`
+ );
const year = years
- .selectAll('g')
+ .selectAll("g")
.data(dagStates)
.enter()
- .append('g')
- .attr('transform', (d, i) => `translate(0, ${yearPadding + (yearHeight + yearPadding) * i})`);
+ .append("g")
+ .attr(
+ "transform",
+ (d, i) =>
+ `translate(0, ${yearPadding + (yearHeight + yearPadding) * i})`
+ );
year
- .append('text')
- .attr('x', -yearHeight * 0.5)
- .attr('transform', 'rotate(270)')
- .attr('text-anchor', 'middle')
- .attr('class', 'year-label')
+ .append("text")
+ .attr("x", -yearHeight * 0.5)
+ .attr("transform", "rotate(270)")
+ .attr("text-anchor", "middle")
+ .attr("class", "year-label")
.text((d) => d.year);
// write day names
year
- .append('g')
- .attr('transform', `translate(${yearLabelWidth}, ${dayLabelPadding})`)
- .attr('text-anchor', 'end')
- .selectAll('g')
+ .append("g")
+ .attr("transform", `translate(${yearLabelWidth}, ${dayLabelPadding})`)
+ .attr("text-anchor", "end")
+ .selectAll("g")
.data(d3.range(7))
.enter()
- .append('text')
- .attr('y', (i) => (i + 0.5) * cellSize)
- .attr('class', 'day-label')
+ .append("text")
+ .attr("y", (i) => (i + 0.5) * cellSize)
+ .attr("class", "day-label")
.text(formatDay);
// create months groups to old the individual day cells & month outline for each month.
const months = year
- .append('g')
- .attr('transform', `translate(${yearLabelWidth + dayLabelWidth}, 0)`);
+ .append("g")
+ .attr("transform", `translate(${yearLabelWidth + dayLabelWidth}, 0)`);
const month = months
- .append('g')
- .selectAll('g')
- .data((data) => d3
- .range(12)
- .map((i) => ({
+ .append("g")
+ .selectAll("g")
+ .data((data) =>
+ d3.range(12).map((i) => ({
year: data.year,
month: i,
dagStates: data.dagStates[i] || {},
- })))
+ }))
+ )
.enter()
- .append('g')
- .attr('transform', (data) => `translate(${weekOfYear(data.year, data.month) * cellSize}, 0)`);
+ .append("g")
+ .attr(
+ "transform",
+ (data) =>
+ `translate(${weekOfYear(data.year, data.month) * cellSize}, 0)`
+ );
const tipHtml = (data) => {
- const stateCounts = d3.entries(data.dagStates).map((kv) => `${kv.value[0].count} ${kv.key}`);
+ const stateCounts = d3
+ .entries(data.dagStates)
+ .map((kv) => `${kv.value[0].count} ${kv.key}`);
const date = toMoment(data.year, data.month, data.day);
const daySr = formatDay(date.day());
const dateStr = date.format(dateFormat);
- return `${daySr} ${dateStr}
${stateCounts.join('
')}`;
+ return `${daySr} ${dateStr}
${stateCounts.join(
+ "
"
+ )}`;
};
// Create the day cells
month
- .selectAll('g')
- .data((data) => d3
- .range(daysInMonth(data.year, data.month))
- .map((i) => {
+ .selectAll("g")
+ .data((data) =>
+ d3.range(daysInMonth(data.year, data.month)).map((i) => {
const day = i + 1;
const dagRunsByState = data.dagStates[day] || {};
return {
@@ -254,23 +280,31 @@ document.addEventListener('DOMContentLoaded', () => {
day,
dagStates: dagRunsByState,
};
- }))
+ })
+ )
.enter()
- .append('rect')
- .attr('x', (data) => weekOfMonth(data.year, data.month, data.day) * cellSize)
- .attr('y', (data) => toMoment(data.year, data.month, data.day).day() * cellSize)
- .attr('width', cellSize)
- .attr('height', cellSize)
- .attr('class', 'day')
- .attr('fill', (data) => {
- const getCount = (state) => (data.dagStates[state] || [{ count: 0 }])[0].count;
- const runningCount = getCount('running');
+ .append("rect")
+ .attr(
+ "x",
+ (data) => weekOfMonth(data.year, data.month, data.day) * cellSize
+ )
+ .attr(
+ "y",
+ (data) => toMoment(data.year, data.month, data.day).day() * cellSize
+ )
+ .attr("width", cellSize)
+ .attr("height", cellSize)
+ .attr("class", "day")
+ .attr("fill", (data) => {
+ const getCount = (state) =>
+ (data.dagStates[state] || [{ count: 0 }])[0].count;
+ const runningCount = getCount("running");
if (runningCount > 0) return statesColors.running;
- const successCount = getCount('success');
- const failedCount = getCount('failed');
+ const successCount = getCount("success");
+ const failedCount = getCount("failed");
if (successCount + failedCount === 0) {
- const plannedCount = getCount('planned');
+ const plannedCount = getCount("planned");
if (plannedCount > 0) return statesColors.planned;
return statesColors.no_status;
}
@@ -281,36 +315,44 @@ document.addEventListener('DOMContentLoaded', () => {
// We use a minimum color interpolation floor, so that days with low failures ratios
// don't appear almost as green as days with not failure at all.
const floor = 0.5;
- ratioFailures = floor + (failedCount / (failedCount + successCount)) * (1 - floor);
+ ratioFailures =
+ floor + (failedCount / (failedCount + successCount)) * (1 - floor);
}
- return d3.interpolateHsl(statesColors.success, statesColors.failed)(ratioFailures);
+ return d3.interpolateHsl(
+ statesColors.success,
+ statesColors.failed
+ )(ratioFailures);
})
- .on('click', (data) => {
+ .on("click", (data) => {
window.location.href = getGridViewURL(
// add 1 day and subtract 1 ms to not show any run from the next day.
- toMoment(data.year, data.month, data.day).add(1, 'day').subtract(1, 'ms'),
+ toMoment(data.year, data.month, data.day)
+ .add(1, "day")
+ .subtract(1, "ms")
);
})
- .on('mouseover', function showTip(data) {
+ .on("mouseover", function showTip(data) {
const tt = tipHtml(data);
- dayTip.direction('n');
+ dayTip.direction("n");
dayTip.show(tt, this);
})
- .on('mouseout', function hideTip(data) {
+ .on("mouseout", function hideTip(data) {
dayTip.hide(data, this);
});
// add outline (path) around month
month
- .selectAll('g')
+ .selectAll("g")
.data((data) => [data])
.enter()
- .append('path')
- .attr('class', 'month')
- .style('fill', 'none')
- .attr('d', (data) => {
+ .append("path")
+ .attr("class", "month")
+ .style("fill", "none")
+ .attr("d", (data) => {
const firstDayOffset = toMoment(data.year, data.month, 1).day();
- const lastDayOffset = toMoment(data.year, data.month, 1).add(1, 'month').day();
+ const lastDayOffset = toMoment(data.year, data.month, 1)
+ .add(1, "month")
+ .day();
const weeks = weeksInMonth(data.year, data.month);
return d3.svg.line()([
[0, firstDayOffset * cellSize],
@@ -327,7 +369,7 @@ document.addEventListener('DOMContentLoaded', () => {
}
function update() {
- $('#loading').remove();
+ $("#loading").remove();
draw();
}
diff --git a/airflow/www/static/js/callModal.js b/airflow/www/static/js/callModal.js
index d537c6256bbe8..a2cac9f26b422 100644
--- a/airflow/www/static/js/callModal.js
+++ b/airflow/www/static/js/callModal.js
@@ -19,12 +19,12 @@
/* global document, window, $ */
-import { getMetaValue } from './utils';
-import { formatDateTime } from './datetime_utils';
+import { getMetaValue } from "./utils";
+import { formatDateTime } from "./datetime_utils";
function updateQueryStringParameter(uri, key, value) {
- const re = new RegExp(`([?&])${key}=.*?(&|$)`, 'i');
- const separator = uri.indexOf('?') !== -1 ? '&' : '?';
+ const re = new RegExp(`([?&])${key}=.*?(&|$)`, "i");
+ const separator = uri.indexOf("?") !== -1 ? "&" : "?";
if (uri.match(re)) {
return uri.replace(re, `$1${key}=${value}$2`);
}
@@ -33,19 +33,30 @@ function updateQueryStringParameter(uri, key, value) {
}
function updateUriToFilterTasks(uri, taskId, filterUpstream, filterDownstream) {
- const uriWithRoot = updateQueryStringParameter(uri, 'root', taskId);
- const uriWithFilterUpstreamQuery = updateQueryStringParameter(uriWithRoot, 'filter_upstream', filterUpstream);
- return updateQueryStringParameter(uriWithFilterUpstreamQuery, 'filter_downstream', filterDownstream);
+ const uriWithRoot = updateQueryStringParameter(uri, "root", taskId);
+ const uriWithFilterUpstreamQuery = updateQueryStringParameter(
+ uriWithRoot,
+ "filter_upstream",
+ filterUpstream
+ );
+ return updateQueryStringParameter(
+ uriWithFilterUpstreamQuery,
+ "filter_downstream",
+ filterDownstream
+ );
}
-const dagId = getMetaValue('dag_id');
-const logsWithMetadataUrl = getMetaValue('logs_with_metadata_url');
-const externalLogUrl = getMetaValue('external_log_url');
-const extraLinksUrl = getMetaValue('extra_links_url');
-const showExternalLogRedirect = getMetaValue('show_external_log_redirect') === 'True';
-
-const buttons = Array.from(document.querySelectorAll('a[id^="btn_"][data-base-url]')).reduce((obj, elm) => {
- obj[elm.id.replace('btn_', '')] = elm;
+const dagId = getMetaValue("dag_id");
+const logsWithMetadataUrl = getMetaValue("logs_with_metadata_url");
+const externalLogUrl = getMetaValue("external_log_url");
+const extraLinksUrl = getMetaValue("extra_links_url");
+const showExternalLogRedirect =
+ getMetaValue("show_external_log_redirect") === "True";
+
+const buttons = Array.from(
+ document.querySelectorAll('a[id^="btn_"][data-base-url]')
+).reduce((obj, elm) => {
+ obj[elm.id.replace("btn_", "")] = elm;
return obj;
}, {});
@@ -55,10 +66,13 @@ function updateButtonUrl(elm, params) {
url = url.replace(dagId, params.dag_id);
delete params.dag_id;
}
- if (Object.prototype.hasOwnProperty.call(params, 'map_index') && params.map_index === undefined) {
+ if (
+ Object.prototype.hasOwnProperty.call(params, "map_index") &&
+ params.map_index === undefined
+ ) {
delete params.map_index;
}
- elm.setAttribute('href', `${url}?${$.param(params)}`);
+ elm.setAttribute("href", `${url}?${$.param(params)}`);
}
function updateModalUrls({
@@ -91,7 +105,7 @@ function updateModalUrls({
_flt_3_dag_id: dagId,
_flt_3_task_id: taskId,
_flt_3_run_id: dagRunId,
- _oc_TaskInstanceModelView: 'map_index',
+ _oc_TaskInstanceModelView: "map_index",
});
if (buttons.rendered_k8s) {
@@ -106,7 +120,7 @@ function updateModalUrls({
const tiButtonParams = {
_flt_3_dag_id: dagId,
_flt_3_task_id: taskId,
- _oc_TaskInstanceModelView: 'dag_run.execution_date',
+ _oc_TaskInstanceModelView: "dag_run.execution_date",
};
// eslint-disable-next-line no-underscore-dangle
if (mapIndex >= 0) tiButtonParams._flt_0_map_index = mapIndex;
@@ -139,92 +153,95 @@ function callModal({
mappedStates = [],
}) {
// Turn off previous event listeners
- $('.map_index_item').off('click');
- $('form[data-action]').off('submit');
+ $(".map_index_item").off("click");
+ $("form[data-action]").off("submit");
const location = String(window.location);
- $('#btn_filter_upstream').on('click', () => {
- window.location = updateUriToFilterTasks(location, taskId, 'true', 'false');
+ $("#btn_filter_upstream").on("click", () => {
+ window.location = updateUriToFilterTasks(location, taskId, "true", "false");
});
- $('#btn_filter_downstream').on('click', () => {
- window.location = updateUriToFilterTasks(location, taskId, 'false', 'true');
+ $("#btn_filter_downstream").on("click", () => {
+ window.location = updateUriToFilterTasks(location, taskId, "false", "true");
});
- $('#btn_filter_upstream_downstream').on('click', () => {
- window.location = updateUriToFilterTasks(location, taskId, 'true', 'true');
+ $("#btn_filter_upstream_downstream").on("click", () => {
+ window.location = updateUriToFilterTasks(location, taskId, "true", "true");
});
- $('#dag_run_id').text(dagRunId);
- $('#task_id').text(taskId);
- $('#execution_date').text(formatDateTime(executionDate));
- $('#taskInstanceModal').modal({});
- $('#taskInstanceModal').css('margin-top', '0');
- $('#extra_links').prev('hr').hide();
- $('#extra_links').empty().hide();
+ $("#dag_run_id").text(dagRunId);
+ $("#task_id").text(taskId);
+ $("#execution_date").text(formatDateTime(executionDate));
+ $("#taskInstanceModal").modal({});
+ $("#taskInstanceModal").css("margin-top", "0");
+ $("#extra_links").prev("hr").hide();
+ $("#extra_links").empty().hide();
if (mapIndex >= 0) {
- $('#modal_map_index').show();
- $('#modal_map_index .value').text(mapIndex);
+ $("#modal_map_index").show();
+ $("#modal_map_index .value").text(mapIndex);
} else {
- $('#modal_map_index').hide();
- $('#modal_map_index .value').text('');
+ $("#modal_map_index").hide();
+ $("#modal_map_index .value").text("");
}
let subDagId;
if (isSubDag) {
- $('#div_btn_subdag').show();
+ $("#div_btn_subdag").show();
subDagId = `${dagId}.${taskId}`;
} else {
- $('#div_btn_subdag').hide();
+ $("#div_btn_subdag").hide();
}
// Show a span or dropdown for mapIndex
if (mapIndex >= 0 && !mappedStates.length) {
- $('#modal_map_index').show();
- $('#modal_map_index .value').text(mapIndex);
- $('#mapped_dropdown').hide();
+ $("#modal_map_index").show();
+ $("#modal_map_index .value").text(mapIndex);
+ $("#mapped_dropdown").hide();
} else if (mapIndex >= 0 || isMapped) {
- $('#modal_map_index').show();
- $('#modal_map_index .value').text('');
- $('#mapped_dropdown').show();
-
- const dropdownText = mapIndex > -1
- ? mapIndex
- : `All ${mappedStates.length} Mapped Instances`;
- $('#mapped_dropdown #dropdown-label').text(dropdownText);
- $('#mapped_dropdown .dropdown-menu').empty();
- $('#mapped_dropdown .dropdown-menu')
- .append(`All ${mappedStates.length} Mapped Instances`);
+ $("#modal_map_index").show();
+ $("#modal_map_index .value").text("");
+ $("#mapped_dropdown").show();
+
+ const dropdownText =
+ mapIndex > -1 ? mapIndex : `All ${mappedStates.length} Mapped Instances`;
+ $("#mapped_dropdown #dropdown-label").text(dropdownText);
+ $("#mapped_dropdown .dropdown-menu").empty();
+ $("#mapped_dropdown .dropdown-menu").append(
+ `All ${mappedStates.length} Mapped Instances`
+ );
mappedStates.forEach((state, i) => {
- $('#mapped_dropdown .dropdown-menu')
- .append(`${i} - ${state}`);
+ $("#mapped_dropdown .dropdown-menu").append(
+ `${i} - ${state}`
+ );
});
} else {
- $('#modal_map_index').hide();
- $('#modal_map_index .value').text('');
- $('#mapped_dropdown').hide();
+ $("#modal_map_index").hide();
+ $("#modal_map_index .value").text("");
+ $("#mapped_dropdown").hide();
}
if (isMapped) {
- $('#task_actions').text(`Task Actions for all ${mappedStates.length} instances`);
- $('#btn_mapped').show();
- $('#mapped_dropdown').css('display', 'inline-block');
- $('#btn_rendered').hide();
- $('#btn_xcom').hide();
- $('#btn_log').hide();
- $('#btn_task').hide();
+ $("#task_actions").text(
+ `Task Actions for all ${mappedStates.length} instances`
+ );
+ $("#btn_mapped").show();
+ $("#mapped_dropdown").css("display", "inline-block");
+ $("#btn_rendered").hide();
+ $("#btn_xcom").hide();
+ $("#btn_log").hide();
+ $("#btn_task").hide();
} else {
- $('#task_actions').text('Task Actions');
- $('#btn_rendered').show();
- $('#btn_xcom').show();
- $('#btn_log').show();
- $('#btn_mapped').hide();
- $('#btn_task').show();
+ $("#task_actions").text("Task Actions");
+ $("#btn_rendered").show();
+ $("#btn_xcom").show();
+ $("#btn_log").show();
+ $("#btn_mapped").hide();
+ $("#btn_task").show();
}
- $('#dag_dl_logs').hide();
- $('#dag_redir_logs').hide();
+ $("#dag_dl_logs").hide();
+ $("#dag_redir_logs").hide();
if (tryNumber > 0 && !isMapped) {
- $('#dag_dl_logs').show();
+ $("#dag_dl_logs").show();
if (showExternalLogRedirect) {
- $('#dag_redir_logs').show();
+ $("#dag_redir_logs").show();
}
}
@@ -236,83 +253,89 @@ function callModal({
dagRunId,
});
- $('#try_index > li').remove();
- $('#redir_log_try_index > li').remove();
- const startIndex = (tryNumber > 2 ? 0 : 1);
+ $("#try_index > li").remove();
+ $("#redir_log_try_index > li").remove();
+ const startIndex = tryNumber > 2 ? 0 : 1;
const query = new URLSearchParams({
dag_id: dagId,
task_id: taskId,
execution_date: executionDate,
- metadata: 'null',
+ metadata: "null",
});
if (mapIndex !== undefined) {
- query.set('map_index', mapIndex);
+ query.set("map_index", mapIndex);
}
for (let index = startIndex; index < tryNumber; index += 1) {
let showLabel = index;
if (index !== 0) {
- query.set('try_number', index);
+ query.set("try_number", index);
} else {
- showLabel = 'All';
+ showLabel = "All";
}
- $('#try_index').append(`
+ $("#try_index").append(`
${showLabel}
`);
if (index !== 0 || showExternalLogRedirect) {
- $('#redir_log_try_index').append(`
+ $("#redir_log_try_index")
+ .append(`
${showLabel}
`);
}
}
- query.delete('try_number');
+ query.delete("try_number");
if (!isMapped && extraLinks && extraLinks.length > 0) {
const markupArr = [];
extraLinks.sort();
$.each(extraLinks, (i, link) => {
- query.set('link_name', link);
- const externalLink = $('');
- const linkTooltip = $('');
+ query.set("link_name", link);
+ const externalLink = $(
+ ''
+ );
+ const linkTooltip = $(
+ ''
+ );
linkTooltip.append(externalLink);
externalLink.text(link);
- $.ajax(
- {
- url: `${extraLinksUrl}?${query}`,
- cache: false,
- success(data) {
- externalLink.attr('href', data.url);
- // open absolute (external) links in a new tab/window and relative (local) links
- // directly
- if (/^(?:[a-z]+:)?\/\//.test(data.url)) {
- externalLink.attr('target', '_blank');
- }
- externalLink.removeClass('disabled');
- linkTooltip.tooltip('disable');
- },
- error(data) {
- linkTooltip.tooltip('hide').attr('title', data.responseJSON.error).tooltip('fixTitle');
- },
+ $.ajax({
+ url: `${extraLinksUrl}?${query}`,
+ cache: false,
+ success(data) {
+ externalLink.attr("href", data.url);
+ // open absolute (external) links in a new tab/window and relative (local) links
+ // directly
+ if (/^(?:[a-z]+:)?\/\//.test(data.url)) {
+ externalLink.attr("target", "_blank");
+ }
+ externalLink.removeClass("disabled");
+ linkTooltip.tooltip("disable");
},
- );
+ error(data) {
+ linkTooltip
+ .tooltip("hide")
+ .attr("title", data.responseJSON.error)
+ .tooltip("fixTitle");
+ },
+ });
markupArr.push(linkTooltip);
});
- const extraLinksSpan = $('#extra_links');
- extraLinksSpan.prev('hr').show();
+ const extraLinksSpan = $("#extra_links");
+ extraLinksSpan.prev("hr").show();
extraLinksSpan.append(markupArr).show();
extraLinksSpan.find('[data-toggle="tooltip"]').tooltip();
}
// Switch the modal from a mapped task summary to a specific mapped task instance
function switchMapItem() {
- const mi = $(this).attr('data-mapIndex');
- if (mi === 'all') {
+ const mi = $(this).attr("data-mapIndex");
+ if (mi === "all") {
callModal({
taskId,
executionDate,
@@ -353,13 +376,13 @@ function callModal({
} else if (form.map_index) {
form.map_index.remove();
}
- form.action = $(this).data('action');
+ form.action = $(this).data("action");
form.submit();
}
}
- $('form[data-action]').on('submit', submit);
- $('.map_index_item').on('click', switchMapItem);
+ $("form[data-action]").on("submit", submit);
+ $(".map_index_item").on("click", switchMapItem);
}
export default callModal;
diff --git a/airflow/www/static/js/components/AutoRefresh.tsx b/airflow/www/static/js/components/AutoRefresh.tsx
index 7eb59bca04153..9e1e9644c62a6 100644
--- a/airflow/www/static/js/components/AutoRefresh.tsx
+++ b/airflow/www/static/js/components/AutoRefresh.tsx
@@ -17,22 +17,22 @@
* under the License.
*/
-import React from 'react';
-import {
- Switch,
- FormControl,
- FormLabel,
- Spinner,
-} from '@chakra-ui/react';
+import React from "react";
+import { Switch, FormControl, FormLabel, Spinner } from "@chakra-ui/react";
-import { useAutoRefresh } from 'src/context/autorefresh';
+import { useAutoRefresh } from "src/context/autorefresh";
const AutoRefresh = () => {
const { isRefreshOn, toggleRefresh, isPaused } = useAutoRefresh();
return (
-
+
{
isDisabled={isPaused}
isChecked={isRefreshOn}
size="lg"
- title={isPaused ? 'Autorefresh is disabled while the DAG is paused' : ''}
+ title={
+ isPaused ? "Autorefresh is disabled while the DAG is paused" : ""
+ }
/>
);
diff --git a/airflow/www/static/js/components/Clipboard.test.tsx b/airflow/www/static/js/components/Clipboard.test.tsx
index a27cdf16ceaaa..1d7b39bdb46e3 100644
--- a/airflow/www/static/js/components/Clipboard.test.tsx
+++ b/airflow/www/static/js/components/Clipboard.test.tsx
@@ -19,21 +19,24 @@
/* global describe, test, expect, jest, window */
-import React from 'react';
-import '@testing-library/jest-dom';
-import { render, fireEvent } from '@testing-library/react';
+import React from "react";
+import "@testing-library/jest-dom";
+import { render, fireEvent } from "@testing-library/react";
-import { ClipboardButton } from './Clipboard';
+import { ClipboardButton } from "./Clipboard";
-describe('ClipboardButton', () => {
- test('Loads button', async () => {
+describe("ClipboardButton", () => {
+ test("Loads button", async () => {
const windowPrompt = window.prompt;
window.prompt = jest.fn();
const { getByText } = render();
const button = getByText(/copy/i);
fireEvent.click(button);
- expect(window.prompt).toHaveBeenCalledWith('Copy to clipboard: Ctrl+C, Enter', 'lorem ipsum');
+ expect(window.prompt).toHaveBeenCalledWith(
+ "Copy to clipboard: Ctrl+C, Enter",
+ "lorem ipsum"
+ );
window.prompt = windowPrompt;
});
});
diff --git a/airflow/www/static/js/components/Clipboard.tsx b/airflow/www/static/js/components/Clipboard.tsx
index eca0e94dbf027..0e0a5d451b8ef 100644
--- a/airflow/www/static/js/components/Clipboard.tsx
+++ b/airflow/www/static/js/components/Clipboard.tsx
@@ -17,31 +17,31 @@
* under the License.
*/
-import React from 'react';
+import React from "react";
import {
Button,
IconButton,
Tooltip,
useClipboard,
forwardRef,
-} from '@chakra-ui/react';
-import { FiCopy } from 'react-icons/fi';
+} from "@chakra-ui/react";
+import { FiCopy } from "react-icons/fi";
-import { useContainerRef } from 'src/context/containerRef';
+import { useContainerRef } from "src/context/containerRef";
export const ClipboardButton = forwardRef(
(
{
value,
- variant = 'outline',
+ variant = "outline",
iconOnly = false,
- label = 'copy',
- title = 'Copy',
- colorScheme = 'blue',
- 'aria-label': ariaLabel = 'Copy',
+ label = "copy",
+ title = "Copy",
+ colorScheme = "blue",
+ "aria-label": ariaLabel = "Copy",
...rest
},
- ref,
+ ref
) => {
const { hasCopied, onCopy } = useClipboard(value);
const containerRef = useContainerRef();
@@ -64,7 +64,11 @@ export const ClipboardButton = forwardRef(
portalProps={{ containerRef }}
>
{iconOnly ? (
- } aria-label={ariaLabel} {...commonProps} />
+ }
+ aria-label={ariaLabel}
+ {...commonProps}
+ />
) : (
} {...commonProps}>
{label}
@@ -72,16 +76,23 @@ export const ClipboardButton = forwardRef(
)}
);
- },
+ }
);
interface Props {
- value: string
+ value: string;
}
export const ClipboardText = ({ value }: Props) => (
<>
{value}
-
+
>
);
diff --git a/airflow/www/static/js/components/ConfirmDialog.tsx b/airflow/www/static/js/components/ConfirmDialog.tsx
index 055186e6a2e68..4826f11ff5cfe 100644
--- a/airflow/www/static/js/components/ConfirmDialog.tsx
+++ b/airflow/www/static/js/components/ConfirmDialog.tsx
@@ -17,7 +17,7 @@
* under the License.
*/
-import React, { PropsWithChildren, useRef } from 'react';
+import React, { PropsWithChildren, useRef } from "react";
import {
AlertDialog,
AlertDialogBody,
@@ -28,9 +28,9 @@ import {
Button,
Code,
Text,
-} from '@chakra-ui/react';
+} from "@chakra-ui/react";
-import { useContainerRef } from 'src/context/containerRef';
+import { useContainerRef } from "src/context/containerRef";
interface Props extends PropsWithChildren {
isOpen: boolean;
@@ -43,7 +43,14 @@ interface Props extends PropsWithChildren {
}
const ConfirmDialog = ({
- isOpen, onClose, title = 'Wait a minute', description, affectedTasks, onConfirm, isLoading = false, children,
+ isOpen,
+ onClose,
+ title = "Wait a minute",
+ description,
+ affectedTasks,
+ onConfirm,
+ isLoading = false,
+ children,
}: Props) => {
const initialFocusRef = useRef(null);
const containerRef = useContainerRef();
@@ -68,18 +75,22 @@ const ConfirmDialog = ({
{children}
{description}
{affectedTasks.map((ti) => (
- {ti}
+
+ {ti}
+
))}
- {!affectedTasks.length && (
- No task instances to change.
- )}
+ {!affectedTasks.length && No task instances to change.}
-
-
diff --git a/airflow/www/static/js/components/InfoTooltip.tsx b/airflow/www/static/js/components/InfoTooltip.tsx
index 0cf593d466a3b..b0c7263593470 100644
--- a/airflow/www/static/js/components/InfoTooltip.tsx
+++ b/airflow/www/static/js/components/InfoTooltip.tsx
@@ -17,13 +17,11 @@
* under the License.
*/
-import React, { ReactNode } from 'react';
-import {
- Box, Tooltip,
-} from '@chakra-ui/react';
-import { MdInfo } from 'react-icons/md';
-import { useContainerRef } from 'src/context/containerRef';
-import type { IconBaseProps } from 'react-icons';
+import React, { ReactNode } from "react";
+import { Box, Tooltip } from "@chakra-ui/react";
+import { MdInfo } from "react-icons/md";
+import { useContainerRef } from "src/context/containerRef";
+import type { IconBaseProps } from "react-icons";
interface InfoTooltipProps extends IconBaseProps {
label: ReactNode;
diff --git a/airflow/www/static/js/components/LinkButton.test.tsx b/airflow/www/static/js/components/LinkButton.test.tsx
index 0fc9181a58097..fe11d8e8bf25e 100644
--- a/airflow/www/static/js/components/LinkButton.test.tsx
+++ b/airflow/www/static/js/components/LinkButton.test.tsx
@@ -19,20 +19,20 @@
/* global describe, test, expect */
-import React from 'react';
-import { render } from '@testing-library/react';
+import React from "react";
+import { render } from "@testing-library/react";
-import LinkButton from './LinkButton';
+import LinkButton from "./LinkButton";
-describe('Test LinkButton Component.', () => {
- test('LinkButton should be rendered as a link.', () => {
+describe("Test LinkButton Component.", () => {
+ test("LinkButton should be rendered as a link.", () => {
const { getByText, container } = render(
The link
- ,
+
);
- expect(getByText('The link')).toBeDefined();
- expect(container.querySelector('a')).not.toBeNull();
+ expect(getByText("The link")).toBeDefined();
+ expect(container.querySelector("a")).not.toBeNull();
});
});
diff --git a/airflow/www/static/js/components/LinkButton.tsx b/airflow/www/static/js/components/LinkButton.tsx
index 787157c694f26..5bd665a2d5bbd 100644
--- a/airflow/www/static/js/components/LinkButton.tsx
+++ b/airflow/www/static/js/components/LinkButton.tsx
@@ -17,18 +17,18 @@
* under the License.
*/
-import React from 'react';
-import {
- Button,
- ButtonProps,
- Link,
-} from '@chakra-ui/react';
+import React from "react";
+import { Button, ButtonProps, Link } from "@chakra-ui/react";
interface Props extends ButtonProps {
href?: string;
target?: string;
}
-const LinkButton = ({ children, ...rest }: Props) => ({children});
+const LinkButton = ({ children, ...rest }: Props) => (
+
+ {children}
+
+);
export default LinkButton;
diff --git a/airflow/www/static/js/components/MultiSelect.tsx b/airflow/www/static/js/components/MultiSelect.tsx
index f326c78e5d7dd..7c5899bf3266e 100644
--- a/airflow/www/static/js/components/MultiSelect.tsx
+++ b/airflow/www/static/js/components/MultiSelect.tsx
@@ -17,9 +17,9 @@
* under the License.
*/
-import React from 'react';
-import { Select } from 'chakra-react-select';
-import type { SelectComponent } from 'chakra-react-select';
+import React from "react";
+import { Select } from "chakra-react-select";
+import type { SelectComponent } from "chakra-react-select";
const MultiSelect: SelectComponent = ({ chakraStyles, ...props }) => (