123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254 |
- /**
- * 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.
- */
- import Ember from 'ember';
- export default Ember.Controller.extend({
- queryParams: ["service"],
- service: undefined,
- selectedAttemptId: "",
- attemptContainerList: null,
- selectedContainerId: "",
- selectedLogFileName: "",
- containerLogFiles: null,
- selectedLogFileContent: "",
- _isLoadingTopPanel: false,
- _isLoadingBottomPanel: false,
- initializeSelect: function(selector = ".js-fetch-attempt-containers") {
- Ember.run.schedule("afterRender", this, function() {
- $(selector).select2({ width: "350px", multiple: false });
- });
- },
- actions: {
- showContainersForAttemptId(attemptId) {
- this.set("selectedAttemptId", "");
- if (attemptId) {
- this.set("_isLoadingTopPanel", true);
- this.set("selectedAttemptId", attemptId);
- this.fetchContainersForAttemptId(attemptId)
- .then(hash => {
- let containers = null;
- let containerIdArr = [];
- if (
- hash.rmContainers.get("length") > 0 &&
- hash.rmContainers.get("content")
- ) {
- hash.rmContainers.get("content").forEach(function(o) {
- containerIdArr.push(o.id);
- }.bind(this));
- containers = (containers || []).concat(
- hash.rmContainers.get("content")
- );
- }
- if (
- hash.tsContainers.get("length") > 0 &&
- hash.tsContainers.get("content")
- ) {
- let tscontainer = [];
- hash.tsContainers.get("content").forEach(function(o) {
- if(!containerIdArr.contains(o.id)) {
- tscontainer.push(o);
- }
- }.bind(this));
- containers = (containers || []).concat(
- tscontainer);
- }
- this.set("attemptContainerList", containers);
- this.initializeSelect(".js-fetch-logs-containers");
- })
- .finally(() => {
- this.set("_isLoadingTopPanel", false);
- });
- } else {
- this.set("attemptContainerList", null);
- this.set("selectedContainerId", "");
- this.set("containerLogFiles", null);
- this.set("selectedLogFileName", "");
- this.set("selectedLogFileContent", "");
- }
- },
- showLogFilesForContainerId(containerId) {
- this.set("selectedContainerId", "");
- this.set("containerLogFiles", null);
- this.set("selectedLogFileName", "");
- this.set("selectedLogFileContent", "");
- if (containerId) {
- this.set("_isLoadingBottomPanel", true);
- this.set("selectedContainerId", containerId);
- this.fetchLogFilesForContainerId(containerId)
- .then(hash => {
- if (hash.logs.get("length") > 0) {
- this.set("containerLogFiles", hash.logs);
- } else {
- this.set("containerLogFiles", null);
- }
- this.initializeSelect(".js-fetch-log-for-container");
- })
- .finally(() => {
- this.set("_isLoadingBottomPanel", false);
- });
- }
- },
- showContentForLogFile(logFile) {
- this.set("selectedLogFileName", "");
- Ember.$("#logContentTextArea1234554321").val("");
- this.set("showFullLog", false);
- if (logFile) {
- this.set("_isLoadingBottomPanel", true);
- this.set("selectedLogFileName", logFile);
- this.fetchContentForLogFile(this.get("selectedContainerId"), logFile)
- .then(
- content => {
- this.set("selectedLogFileContent", content.trim());
- },
- () => {
- this.set("selectedLogFileContent", "");
- }
- )
- .always(() => {
- this.set("_isLoadingBottomPanel", false);
- });
- } else {
- this.set("selectedLogFileContent", "");
- }
- },
- findNextTextInLogContent() {
- let searchInputElem = document.getElementById("logSeachInput98765");
- this.send("searchTextInLogContent", searchInputElem.value);
- },
- searchTextInLogContent(searchText) {
- Ember.$("body").scrollTop(278);
- let textAreaElem = document.getElementById(
- "logContentTextArea1234554321"
- );
- let logContent = textAreaElem.innerText;
- let startIndex = this.searchTextStartIndex || 0;
- if (startIndex === -1) {
- startIndex = this.searchTextStartIndex = 0;
- }
- if (this.prevSearchText !== searchText) {
- startIndex = this.searchTextStartIndex = 0;
- }
- if (searchText && searchText.trim()) {
- searchText = searchText.trim();
- this.prevSearchText = searchText;
- if (startIndex === 0) {
- startIndex = logContent.indexOf(searchText, 0);
- }
- let endIndex = startIndex + searchText.length;
- if (document.createRange && window.getSelection) {
- let range = document.createRange();
- range.selectNodeContents(textAreaElem);
- range.setStart(textAreaElem.childNodes.item(0), startIndex);
- range.setEnd(textAreaElem.childNodes.item(0), endIndex);
- let selection = window.getSelection();
- selection.removeAllRanges();
- selection.addRange(range);
- }
- this.searchTextStartIndex = logContent.indexOf(
- searchText,
- endIndex + 1
- );
- } else {
- this.searchTextStartIndex = 0;
- }
- },
- showFullLogFileContent() {
- this.set("showFullLog", true);
- this.notifyPropertyChange("selectedLogFileContent");
- }
- },
- attemptList: Ember.computed("model.attempts", function() {
- let attempts = this.get("model.attempts");
- let list = null;
- if (attempts && attempts.get("length") && attempts.get("content")) {
- list = [].concat(attempts.get("content"));
- }
- return list;
- }),
- fetchContainersForAttemptId(attemptId) {
- return Ember.RSVP.hash({
- rmContainers: this.store
- .query("yarn-container", {
- app_attempt_id: attemptId
- })
- .catch(function() {
- return Ember.A();
- }),
- tsContainers: this.store
- .query("yarn-timeline-container", {
- app_attempt_id: attemptId
- })
- .catch(function() {
- return Ember.A();
- })
- });
- },
- fetchLogFilesForContainerId(containerId) {
- return Ember.RSVP.hash({
- logs: this.store
- .query("yarn-log", {
- containerId: containerId
- })
- .catch(function() {
- return Ember.A();
- })
- });
- },
- fetchContentForLogFile(containerId, logFile) {
- let logAdapter = this.store.adapterFor("yarn-log");
- return logAdapter.fetchLogFileContent(containerId, logFile);
- },
- resetAfterRefresh() {
- this.set("selectedAttemptId", "");
- this.set("attemptContainerList", null);
- this.set("selectedContainerId", "");
- this.set("selectedLogFileName", "");
- this.set("containerLogFiles", null);
- this.set("selectedLogFileContent", "");
- },
- showFullLog: false,
- showLastFewLinesOfLogContent: Ember.computed(
- "selectedLogFileContent",
- function() {
- let content = this.get("selectedLogFileContent");
- let lines = content.split("\n");
- if (this.get("showFullLog") || lines.length < 10) {
- return content;
- }
- return lines.slice(lines.length - 10).join("\n");
- }
- )
- });
|