ソースを参照

Merge branch 'master' of http://git.choozmo.com:3000/aaron-1015/mechanical into master

jeter20131220 3 年 前
コミット
4dad4c883f
3 ファイル変更214 行追加7 行削除
  1. 35 5
      main.py
  2. 160 0
      static/history.js
  3. 19 2
      templates/history.html

+ 35 - 5
main.py

@@ -600,9 +600,26 @@ async def history(request: Request, Authorize: AuthJWT = Depends()):
     # current_user = Authorize.get_jwt_subject()
     return templates.TemplateResponse(name='history.html', context={'request': request})
 
+@app.get('/history/', response_class=HTMLResponse)
+async def history(request: Request,company:str,factory:str,department:str,towerGroup:str, Authorize: AuthJWT = Depends()):
+    try:
+        Authorize.jwt_required()
+    except Exception as e:
+        print(e)
+        return RedirectResponse('/login')
+    #current_user = Authorize.get_jwt_subject()
+    tower_arr = get_tower(company,factory,department,towerGroup)
+    result = []
+    for tower in tower_arr:
+        tmp_arr = get_vibration_info(tower)
+        for arr in tmp_arr:
+            result.append(arr)
+    
+    return json.dumps(result,ensure_ascii=False, cls = dateEncode)
 
 @app.get('/device', response_class=HTMLResponse)
 async def device(request: Request, Authorize: AuthJWT = Depends()):
+    
     try:
         Authorize.jwt_required()
     except Exception as e:
@@ -614,16 +631,13 @@ async def device(request: Request, Authorize: AuthJWT = Depends()):
     print("start")
     for row in db.query(statement):
         print(row['id'],row['deviceName'],row['hostIP'],row['CompanyCode'],row['FactoryCode'],row['DepartmentCode'])
-        a.append({row['id'],row['deviceName'],row['hostIP']})
-        a.append({row['CompanyCode'],row['FactoryCode'],row['DepartmentCode']})
+        a.append((row['id'],row['deviceName'],row['hostIP'],row['CompanyCode'],row['FactoryCode'],row['DepartmentCode']))
     print(a)
     print("over3")
     #result  = json.dumps(b,ensure_ascii=False)
     # current_user = Authorize.get_jwt_subject()
     return templates.TemplateResponse(name='device.html', context={'request': request,'a':a})
 
-
-
 @app.get('/system', response_class=HTMLResponse)
 async def system(request: Request, Authorize: AuthJWT = Depends()):
     try:
@@ -1306,6 +1320,20 @@ def get_frequency(vibration_id:str):
         result['value'].append(row['MFValue'])
     return result
 
+def get_vibration_info(deviceCode:str):
+    db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/Water_tower?charset=utf8mb4')
+    cmd = 'SELECT * FROM vibration where device_id = "'+deviceCode+'"'
+    
+    tmp = []
+    for row in db.query(cmd) :
+        result = {}
+        for col in db['vibration'].columns :
+            result[col] = row[col]
+        #print(result)
+        tmp.append(result)
+        #print(tmp)
+    return tmp
+
 
 def add_data():
     db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/Water_tower?charset=utf8mb4')
@@ -1338,4 +1366,6 @@ def add_tower():
     loc_dt_format = loc_dt.strftime("%Y-%m-%d %H:%M:%S")
     for device in ['dev005','dev006','dev007','dev008','dev009']:
         for key in ['hotTemp','waterFlow','coldTemp','fanMotorCur','fanMotorSpeedFreq']:
-            db['record_dcs'].insert(dict(time_stamp=loc_dt_format, MFValue=uniform(0,0.12),vibration_id = 1))
+            db['record_dcs'].insert(dict(time_stamp=loc_dt_format, MFValue=uniform(0,0.12),vibration_id = 1))
+
+

+ 160 - 0
static/history.js

@@ -0,0 +1,160 @@
+var xhr = new XMLHttpRequest();
+var url = "tower/org";
+obj = "";
+xhr.open("GET", url);
+xhr.onload = function () {
+    obj = JSON.parse(xhr.responseText);
+    //insertHTML();
+    start();
+    onChangeColumn1();
+    onChangeColumn2();
+    onChangeColumn3();
+
+    click_button_history();
+
+};
+xhr.send();
+
+function start() {
+    companySelect = document.getElementById("company-list");
+    factorySelect = document.getElementById("factory-list");
+    departmentSelect = document.getElementById("department-list");
+    towerGroupSelect = document.getElementById("towerGroup-list");
+    var inner = '';
+    var company_arr = new Array();
+
+    for (var i = 0; i < obj.length; i++) {
+        if (company_arr.indexOf(obj[i].company) == -1 && obj[i].able == 1) {
+            inner = inner + '<option value="' + obj[i].company + '">公司' + obj[i].company + '</option>';
+            company_arr.push(obj[i].company);
+        }
+    }
+
+    //innerHTML 賦值inner給這element屬性
+    companySelect.innerHTML = inner;
+}
+//製造一個字串,以html的語法填入院的陣列
+
+
+
+function onChangeColumn1() {
+    companySelect = document.getElementById("company-list");
+    factorySelect = document.getElementById("factory-list");
+    departmentSelect = document.getElementById("department-list");
+    towerGroupSelect = document.getElementById("towerGroup-list");
+    factorySelect.innerHTML = '';
+    let factory_arr = new Array();
+    let factory_inner = '';
+    for (var i = 0; i < obj.length; i++) {
+
+        if (companySelect.value == obj[i].company) {
+            if (factory_arr.indexOf(obj[i].factory) == -1 && obj[i].able == 1) {
+                factory_inner = factory_inner + '<option value="' + obj[i].factory + '">廠區' + obj[i].factory + '</option>';
+                factory_arr.push(obj[i].factory);
+            }
+        }
+        //alert(companySelect.value);
+    }
+
+    factorySelect.innerHTML = factory_inner;
+    onChangeColumn2();
+}
+
+function onChangeColumn2() {
+    companySelect = document.getElementById("company-list");
+    factorySelect = document.getElementById("factory-list");
+    departmentSelect = document.getElementById("department-list");
+    towerGroupSelect = document.getElementById("towerGroup-list");
+    departmentSelect.innerHTML = '';
+    let department_arr = new Array();
+    let department_inner = '';
+    for (var i = 0; i < obj.length; i++) {
+        if (companySelect.value == obj[i].company && factorySelect.value == obj[i].factory) {
+            if (department_arr.indexOf(obj[i].department) == -1 && obj[i].able == 1) {
+                department_inner = department_inner + '<option value="' + obj[i].department + '">課' + obj[i].department + '</option>';
+                department_arr.push(obj[i].department);
+            }
+        }
+
+    }
+    document.getElementById("department-list").innerHTML = department_inner;
+    onChangeColumn3();
+}
+
+function onChangeColumn3() {
+    companySelect = document.getElementById("company-list");
+    factorySelect = document.getElementById("factory-list");
+    departmentSelect = document.getElementById("department-list");
+    towerGroupSelect = document.getElementById("towerGroup-list");
+    towerGroupSelect.innerHTML = '';
+    let towerGroup_inner = '';
+    for (var i = 0; i < obj.length; i++) {
+        if (companySelect.value == obj[i].company && factorySelect.value == obj[i].factory && departmentSelect.value == obj[i].department) {
+            if (obj[i].able == 1) {
+                for (var ii = 0; ii < obj[i].group.length; ii++) {
+                    towerGroup_inner = towerGroup_inner + '<option value="' + obj[i].group[ii] + '">機組' + obj[i].group[ii] + '</option>';
+                }
+            }
+        }
+
+    }
+    document.getElementById("towerGroup-list").innerHTML = towerGroup_inner;
+}
+
+function click_button_history() {
+    //alert("click");
+    companySelect = document.getElementById("company-list");
+    factorySelect = document.getElementById("factory-list");
+    departmentSelect = document.getElementById("department-list");
+    towerGroupSelect = document.getElementById("towerGroup-list");
+    if (companySelect.value != 0 && factorySelect.value != 0 && departmentSelect.value != 0 && towerGroupSelect.value != 0) {
+        var url2 = "history/?company=" + companySelect.value + "&factory=" + factorySelect.value + "&department=" + departmentSelect.value + "&towerGroup=" + towerGroupSelect.value;
+        var xhr2 = new XMLHttpRequest();
+        xhr2.open("GET", url2);
+        xhr2.onload = function () {
+            obj2 = JSON.parse(xhr2.responseText);
+            inner_table(obj2);
+        };
+        xhr2.send();
+    }
+
+}
+
+function inner_table(obj){
+    console.log(obj);
+    inner ='<div class="hostory_table"> \
+                <table> \
+                    <tr>\
+                        <th >Creat ID</th>\
+                        <th >Creat time</th>\
+                        <th >device Code</th>\
+                        <th >channel Code</th>\
+                        <th >record Feild</th>\
+                        <th >record Mark</th>\
+                        <th >remark Value</th>\
+                        <th >remark Label</th>\
+                        <th >remark Text</th>\
+                        <th >remark Link</th>\
+                        <th >device Name</th>\
+                        <th >Channel Name</th>\
+                        <th >Editor</th>\
+                    </tr>';
+    for (var i = 0; i < obj.length; i++) {
+        inner+='<tr>\
+                    <td >' + obj[i].id + '</td>\
+                    <td >' + obj[i].updateTime + '</td>\
+                    <td >' + obj[i].device_id + '</td>\
+                    <td >' + obj[i].channelName + '</td>\
+                    <td >CV_index</td>\
+                    <td ></td>\
+                    <td >' + obj[i].CVIndex + '</td>\
+                    <td >WARING</td>\
+                    <td >可輸入文字</td>\
+                    <td ><button>圖片</button></td>\
+                    <td >tmp</td>\
+                    <td ></td>\
+                    <td >FFT</td>\
+                </tr>';
+    } 
+    document.getElementById("vibration_info").innerHTML = inner;
+}

+ 19 - 2
templates/history.html

@@ -6,7 +6,7 @@
 
 
 {% block body %}
-    <div id="select_histories">
+    <!-- <div id="select_histories">
         <div id="select_histories_1">
             <select>
                 <option>選擇設備</option>
@@ -53,6 +53,23 @@
         <img src="static/img/history.png" alt="歷史健康指標(CV)" />
     </div>
     <div id="history_events_list">
-    </div>
+    </div> -->
     
+    <script type="text/javascript" src="/static/history.js"></script>
+    <div id='select_boxes'>
+        <select class="select-item" id="company-list" onChange="onChangeColumn1();">
+            <option value=0>公司A</option>
+        </select>
+        <select class="select-item" id="factory-list" onChange="onChangeColumn2();">
+            <option value=0>工廠A</option>
+        </select>
+        <select class="select-item" id="department-list" onChange="onChangeColumn3();">
+            <option value=0>廠區A</option>
+        </select>
+        <select class="select-item" id="towerGroup-list">
+            <option value=0>機組1</option>
+        </select>
+        <button id="tower_btn" onclick="click_button_history();"><i class="fas fa-search me-2"></i>搜尋</button>
+    </div>
+    <div id='vibration_info'></div>
 {% endblock %}