/*!
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/* global $, isoDateToTimeEl, document */
import { getMetaValue } from "./utils";
export function openDatasetModal(dagId, summary, nextDatasets, error) {
const datasetEvents = nextDatasets.events || [];
const expression = nextDatasets.dataset_expression;
const datasetsUrl = getMetaValue("datasets_url");
$("#dataset_expression").empty();
$("#datasets_tbody").empty();
$("#datasets_error").hide();
$("#dag_id").text(dagId);
$("#dataset_expression").text(JSON.stringify(expression, null, 2));
$("#datasetNextRunModal").modal({});
if (summary) $("#next_run_summary").text(summary);
datasetEvents.forEach((d) => {
const row = document.createElement("tr");
const uriCell = document.createElement("td");
const datasetLink = document.createElement("a");
datasetLink.href = `${datasetsUrl}?uri=${encodeURIComponent(d.uri)}`;
datasetLink.innerText = d.uri;
uriCell.append(datasetLink);
const timeCell = document.createElement("td");
if (d.lastUpdate) timeCell.append(isoDateToTimeEl(d.lastUpdate));
row.append(uriCell);
row.append(timeCell);
$("#datasets_tbody").append(row);
});
if (error) {
$("#datasets_error_msg").text(error);
$("#datasets_error").show();
}
}
export function getDatasetTooltipInfo(dagId, run, setNextDatasets) {
let nextRunUrl = getMetaValue("next_run_datasets_url");
if (dagId) {
if (nextRunUrl.includes("__DAG_ID__")) {
nextRunUrl = nextRunUrl.replace("__DAG_ID__", dagId);
}
$.get(nextRunUrl)
.done((nextDatasets) => {
const datasetEvents = nextDatasets.events;
let count = 0;
let title = "Pending datasets:
";
setNextDatasets(nextDatasets);
datasetEvents.forEach((d) => {
if (!d.created_at) {
if (count < 4) title += `${d.uri}
`;
count += 1;
}
});
if (count > 4) {
title += `
And ${count - 4} more.`;
}
title += "
Click to see more details.";
$(run).attr("data-original-title", () => title);
})
.fail((response, textStatus, err) => {
const description =
(response.responseJSON && response.responseJSON.error) ||
"Something went wrong.";
const error = `${textStatus}: ${err} ${description}`;
setNextDatasets([], error);
});
}
}