OSDN Git Service

97f6e0ffaadb85805a67a83996bb1c03565e7111
[alterlinux/hayao.fascode.net.git] / alter / Download.js
1 // ダウンロードIDを取得してフォームを作成
2 const XmlReq = new XMLHttpRequest();
3 let JsonData = null;
4 XmlReq.onreadystatechange = function() {
5     if ((XmlReq.readyState === 4) && (XmlReq.status === 200)) {
6         JsonData = JSON.parse(XmlReq.responseText);
7         Object.keys(JsonData).reverse().forEach((ReleaseId) => {
8             //console.log(JsonData[ReleaseId])
9
10             if (JsonData[ReleaseId].disabled == true){
11                 return;
12             }else{
13                 console.log(ReleaseId + "を追加しました");
14             }
15
16             // セレクトボックス
17             let ReleaseIdOption = document.createElement("option");
18             ReleaseIdOption.value = ReleaseId;
19             ReleaseIdOption.innerText = ReleaseId;
20             ReleaseIdForm.insertAdjacentElement("afterbegin", ReleaseIdOption);
21
22         
23         });
24         SetDownloadLinkClass();
25     }
26 }
27 XmlReq.open("GET","/alter/alterlinux.json", true);
28 XmlReq.send(null);
29
30 // ダウンロードリンクのClassを設定
31 const SetDownloadLinkClass = () => {
32     Array.from(ReleaseIdForm.getElementsByTagName("option")).forEach((element) => {
33         element.classList.add("p-2", "cursor-pointer", "mt-1")
34     })
35 }
36
37 // リリース番号が変更された時
38 ReleaseIdForm.addEventListener("change", (e) => {
39     
40     let SelectedReleaseId = e.path[0].value;
41     EditionForm.innerHTML = null;
42
43     if (SelectedReleaseId == "None" || SelectedReleaseId == undefined || SelectedReleaseId == null){
44         document.getElementById("editionform_div").classList.add("hidden");
45         ShowMsg("リリース番号を選択してください");
46         return 0;
47     }else{
48         console.log("エディション一覧を" + SelectedReleaseId + "に更新しました");
49         document.getElementById("editionform_div").classList.remove("hidden");
50     }
51
52     Object.keys(JsonData[SelectedReleaseId]).forEach((EditionName) => {
53         if (EditionName != "disabled"){
54             let EditionOption = document.createElement("option");
55             EditionOption.value = EditionName;
56             EditionOption.innerText = EditionName;  
57             EditionForm.insertAdjacentElement("afterbegin", EditionOption)
58         }
59     })
60 });
61
62 // 読み込み時にエディション選択フォームを隠す
63 window.addEventListener("load", ()=>{
64     const SelectedReleaseId = ReleaseIdForm.value;
65     if (SelectedReleaseId == "None" || SelectedReleaseId == undefined || SelectedReleaseId == null){
66         document.getElementById("editionform_div").classList.add("hidden");
67         return 0;
68     }
69 })
70
71
72 // ダウンロードのエラーメッセージを表示する
73 const ShowMsg = (message) => {
74     const messageElement = document.getElementById("message");
75     if (message){
76         messageElement.innerText = message;
77         console.log(message);
78     }else{
79         messageElement.innerText = null;
80     }
81     
82 }
83
84 // エディションが変更された時
85 const ShowEditionInfo = () => {
86     const ReleaseId = ReleaseIdForm.value;
87     const EditionName = EditionForm.value;
88     if (ReleaseId && EditionName){
89         ShowMsg(ReleaseId + "の" + EditionName + "が選択されました");
90     }else{
91         //ShowMsg();
92     }
93 }
94 EditionForm.addEventListener("change", ShowEditionInfo);
95 ReleaseIdForm.addEventListener("change", ShowEditionInfo);
96
97 //ダウンロードボタン
98 DownloadButton.addEventListener("click", (element) => {
99
100     const ReleaseId = ReleaseIdForm.value
101     const EditionName = EditionForm.value
102     if (! EditionName){
103         ShowMsg("設定が不完全です。リリース番号とエディションを適切に指定してください。\n指定してるにも関わらずエラーが出る場合は開発者に連絡してください。");
104         return 0;
105     }else{
106         const OsdnId = JsonData[ReleaseId][EditionName]
107         //console.log(OsdnId)
108         location.href = "https://osdn.net/projects/alterlinux/releases/" + OsdnId
109     }
110 })