2017-04-17 37 views
0

我正在嘗試在JavaScript中使用switch語句來從外部serverlist.csv中確定服務器狀態。如果csv讀取「online」,switch語句將顯示success.svg,如果「offline」,則switch語句顯示error.svg等等。用csv解析文本定義變量的簡單方法?

在switch語句中,我試圖定義與從外部CSV報告中提取信息的變量:

<p id="demo"></p> 

<script> 
function myFunction() { 
    var online = "online" 
    var offline = "offline" 
    var waiting = "waiting" 
     var x; 
    var y; 
    var d = /* outcome of this variable will be extracted from serverlist.csv, but manually enter value here for now */ online; 

    switch (d) { 
     case 'waiting': 
      x = "Waiting..."; 
      y = 'waiting'; 
      break; 
     case 'online': 
      x = "Online!"; 
      y = 'success'; 
      break; 
     case 'offline': 
      x = "Offline!"; 
      y = 'error'; 
      break; 
    } 
    document.getElementById("demo").innerHTML = x; 
    document.getElementById(y).style.display = 'block'; 
} 

window.onload = myFunction; 
</script> 

<img src="https://image.flaticon.com/icons/svg/130/130879.svg" id="success" style="display:none; width: 100px; height: 100px;"/> 
<img src="https://image.flaticon.com/icons/svg/130/130877.svg" id="error" style="display:none; width: 100px; height: 100px;"/> 
<img src="https://image.flaticon.com/icons/svg/130/130920.svg" id="waiting" style="display:none; width: 100px; height: 100px;"/> 

https://jsfiddle.net/6o5dLfne/4/

Here is the serverlist.csv

+1

究竟是什麼問題? – Slime

+0

目標是構建一個基於Web的儀表板。儀表板監控的其中一件事是服務器狀態和正常運行時間。我有一個通過HTML/CSS構建的視覺效果,但所有視覺效果都是靜態的。我想要構建儀表板來顯示相關和準確的信息,因此如果服務器在線,它將顯示一個圖標,如綠色複選標記,或者如果它處於脫機狀態,它將顯示一個x標記。 –

+0

我看到有效的代碼,因此不確定問題是什麼。你是否想要寫出更好的寫作方式?你問如何解析文件?你想達到什麼目的? – Slime

回答

1

我只想把服務器狀態成一個數組,比它容易操作:

var response = 'Server,Status\n\ 
 
Server1,Online\n\ 
 
Server2,Offline\n\ 
 
'; 
 
var lines = response.split('\n'); 
 
var servers = []; 
 
$.each(lines, function(l, line) { 
 
\t if(l && line) { 
 
    \t var status = line.split(','); 
 
     servers.push({ 
 
     \t 'name': status[0], 
 
      'status': status[1] 
 
     }) 
 
    }; 
 
}); 
 
var demo = $('#demo'); 
 
var demoHtml = ''; 
 
$.each(servers, function(s, server) { 
 
\t demoHtml += '<p class="server-status server-' + server.status + '">' + server.name + '</p>\n' 
 
}); 
 
demo.html(demoHtml);
.server-status::after { 
 
    content: ''; 
 
    display: inline-block; 
 
    margin-left: 5px; 
 
    width: 20px; 
 
    height: 20px; 
 
    background-position: center; 
 
    background-size: 20px auto; 
 
} 
 
.server-Online::after { 
 
    background-image: url('https://image.flaticon.com/icons/svg/130/130879.svg'); 
 
} 
 
.server-Offline::after { 
 
    background-image: url('https://image.flaticon.com/icons/svg/130/130877.svg'); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<p>This demo is attempting to test out the functionality of switching images depending on server status from an external .csv report that will be generated from a powershell script. The goal is to build a responsive webpage dashboard.</p> 
 

 
<div id="demo"></div>

請注意,更容易控制與CSS佈局,如上面完成。也爲這個和類似的應用程序,你可以考慮使用框架Knockout是,看看here實現是多麼容易。

還在JSFiddle上的示例。

+0

謝謝你。我承認,在看了這個答案之後,我完全迷了路。我試圖找出我可以在哪裏插入我的服務器。以下是我想要在服務器聯機時完成http://status.leagueoflegends.com/#na通知的示例,該網站顯示綠色複選標記,但當服務器關閉時,服務器將顯示紅色的x標記。這個過程是完全自動化的(至少假設) –

+0

在你的問題中,你說服務器狀態是在'外部csv報告',你可以通過AJAX獲得它[如下所示](http://stackoverflow.com/questions/) 11409920/loading-a-csv-file-using-jquery-get-returns-the-header-but-no-data#answer-11409957)以防你輸出CORS頭文件(更多[here](http:// stackoverflow .com/questions/5750696/how-to-get-a-cross-origin-resource-sharing-cors-post-request-working)。你也可以使用服務器端(PHP)腳本獲取數據並再次提供Ajax請求 – skobaljic

+0

在Javascript中,只需設置[時間間隔](http://stackoverflow.com/questions/4930439/call-jquery-ajax-request-each-x-minutes)並調用新的數據。 – skobaljic