Best Python code snippet using pyatom_python
tag_actions_wxpython.py
Source:tag_actions_wxpython.py  
1#coding:utf-82import wx3import os4import mysql.connector5import time6import re78'''9create table tag_actions6(text_num int, sent_num int, sent varchar(400), tag_sent varchar(400));10create table new_actions(text_num int, sent_num int, sent varchar(400), tag_sent varchar(400));11'''12#"/home/fengwf/Documents/DRL_data/long_texts/long_texts_ccfs/"13#'/home/fengwf/Documents/DRL_data/windows_help_support/win10_out/'14class TextFrame(wx.Frame):15    def __init__(self):16        self.home_dir = 'tag_actions1/'#"./DRL_data/windows_help_support/win10_out/"17        self.table = 'new_actions1'18        self.total_text = 5219        self.text_num = 020        self.sent_num = 021        self.num = 022        self.max_tags = 023        self.words = []24        self.tag_sent = []25        self.display_sent = []26        self.result = []27        self.start_flag = False28        self.search_flag = False29        self.delete_flag = False30        self.change_flag = False31        self.table_flag = False32        self.exit_flag = False33        self.show_frame()34        3536    def show_frame(self):37        wx.Frame.__init__(self, None, -1, 'Tag Actions from texts', size=(800, 600))  #æ´ä¸ªçé¢å¤§å°38        panel = wx.Panel(self, -1)39        panel.SetBackgroundColour('aquamarine')40        panel.Refresh()4142        str = "Welcome to the tag_actions.app of Fence!"  #éææ¾ç¤ºææ¬ï¼æ¬¢è¿æ é¢43        self.text = wx.StaticText(panel, -1, str, (140,-1))44        font1 = wx.Font(18, wx.ROMAN, wx.ITALIC, wx.BOLD)  #åä½18å·ï¼ç½é©¬åï¼æä½ï¼å ç²45        self.text.SetFont(font1)46        self.text.SetForegroundColour('tan')  #é¢è²ä¸ºæ£è²47        48        self.info_text = wx.StaticText(49            panel, -1, "All rights reserved"+u'©'+"fengwf.PlanLab.2016", (540,540)) #è¾å
¥ææ¬æ¡50        self.info_text.SetForegroundColour('dark slate blue')5152        self.OutputText = wx.TextCtrl(panel, -1,"Input text_num and sent_num:\n", size=(700, 400), 53            pos=(50,40), style=wx.TE_MULTILINE | wx.TE_READONLY | wx.TE_RICH2) #å建ä¸ä¸ªè¾åºææ¬æ§ä»¶54        font2 = wx.Font(12, wx.NORMAL, wx.NORMAL, wx.NORMAL)55        self.OutputText.SetFont(font2)56        #self.OutputText.SetForegroundColour('orchid')57        self.pointer = self.OutputText.GetInsertionPoint()58        59        self.InputLabel = wx.StaticText(panel, -1, "Your input:", (100,455)) #è¾å
¥ææ¬æ¡60        self.InputText = wx.TextCtrl(panel, -1, "", size=(175, -1), \61        style=wx.TE_PROCESS_ENTER, pos=(180,450))62        self.InputText.SetInsertionPoint(0)63        self.Bind(wx.EVT_TEXT_ENTER,self.Input_Box,self.InputText)64        65        self.SearchLabel = wx.StaticText(panel, -1, "Search input:", (390,455)) #è¾å
¥ææ¬æ¡66        self.SearchText = wx.TextCtrl(panel, -1, "", size=(175, -1), \67        style=wx.TE_PROCESS_ENTER, pos=(480,450))  #æ¥è¯¢çè¾å
¥ææ¬æ¡68        self.SearchText.SetInsertionPoint(0)69        self.Bind(wx.EVT_TEXT_ENTER,self.Search_Input,self.SearchText)7071        self.button1 = wx.Button(panel, -1,"Search", pos=(100, 500))  #æç´¢æé®72        self.Bind(wx.EVT_BUTTON, self.Search_Button, self.button1)73        self.button1.SetDefault()74        75        self.button2 = wx.Button(panel, -1,"A", pos=(180, 500))  #æé®ï¼æ¾ç¤ºå
¨é¨è®°å½76        self.Bind(wx.EVT_BUTTON, self.ShowAll_Button, self.button2)77        self.button2.SetDefault()78        79        self.button3 = wx.Button(panel, -1,"L", pos=(260, 500))  #æé®ï¼æ¾ç¤ºæè¿åæ¡è®°å½80        self.Bind(wx.EVT_BUTTON, self.ShowLast10_Button, self.button3)81        self.button3.SetDefault()82        83        self.button4 = wx.Button(panel, -1,"D", pos=(340, 500))  #æé®ï¼å é¤è®°å½84        self.Bind(wx.EVT_BUTTON, self.Delete_Button, self.button4)85        self.button4.SetDefault()86        87        self.button5 = wx.Button(panel, -1,"Exit", pos=(500, 500))  #æé®ï¼éåº88        self.Bind(wx.EVT_BUTTON, self.Exit_Button, self.button5)89        self.button5.SetDefault()90        91        self.button6 = wx.Button(panel, -1,"Reboot", pos=(420, 500))  #æé®ï¼éåº92        self.Bind(wx.EVT_BUTTON, self.Reboot_Button, self.button6)93        self.button6.SetDefault()94        95        self.button7 = wx.Button(panel, -1,"ChangeDir", pos=(580, 500))  #æé®ï¼éåº96        self.Bind(wx.EVT_BUTTON, self.Change_dir_Button, self.button7)97        self.button7.SetDefault()98        99    def div_sents(self):100        try:101            t = open(self.home_dir+str(self.text_num+1)+".txt").read() 102        except IOError:103            self.OutputText.AppendText('\Could not open, no such file or directory as: %s\n'\104                %self.home_dir)105        t = re.sub(r'\n',' ',t)106        t = re.sub(r',|"|\(|\)|\[|\]|\{|\}','',t)107        self.words = []108        sents = re.split(r'[\.?!:;]+ ',t)  #åææ¯ä¸ªå¥åï¼åå·åå·ä¹ç®å®æä¸ä¸ªå¥å109        for i in sents:110            words = i.split()111            if len(words) > 0:112                words[0] = words[0].lower()113                self.words.append(words)114        return self.words115116117    def get_text_from_database(self):118        tmp_table = self.home_dir[:-1]119        get_data = "select * from " + tmp_table + " where text_num=" + \120            str(self.text_num) + " order by sent_num"121        cur.execute(get_data)122        result = cur.fetchall()123        assert len(result) > 0124        125        self.tags = []126        self.words = []127        for i in range(len(result)):128            #get sentences from database129            sent_lower = result[i][2][0].lower() + result[i][2][1:]130            words_of_sent = re.split(r' ',sent_lower)131            tags_of_sent = re.split(r' ',result[i][3])132            self.words.append(words_of_sent)133            self.tags.append(tags_of_sent)134        print '------------  len(words)',sum([len(i) for i in self.words])135    136137    def set_output(self, message, color):138        self.pointer = self.OutputText.GetInsertionPoint()139        self.OutputText.AppendText(message)140        tp_point = self.pointer141        self.pointer = self.OutputText.GetInsertionPoint()142        self.OutputText.SetStyle(tp_point, self.pointer, wx.TextAttr(color, wx.NullColour))143    144145    def Input_Box(self, event):146        input_str = self.InputText.GetValue().encode("ascii")147        temp_in = input_str.split()148        self.OutputText.AppendText(input_str+'\n')149        if not self.start_flag:150            if len(temp_in)!=2:151                message = '\nText_num out of range. Please input again:\n'152                self.set_output(message, "red")153            else:154                start_text = int(temp_in[0])155                start_sent = int(temp_in[1])156                if start_text < 0 or start_text > self.total_text-1:                    157                    message = '\nText_num out of range. Please input again:\n'158                    self.set_output(message, "red")159                else:160                    self.text_num = start_text161                    self.sent_num = start_sent162                    self.get_text_from_database()163                    self.start_flag = True164                    if self.sent_num >= len(self.words) or self.sent_num < 0:165                        self.sent_num = 0166                    message = "\n\n***** Text name: %s *****"%(self.home_dir+str(self.text_num)+'.txt')167                    message += "\nTotal sentences: %d\168                            Total words: %d\n" % (len(self.words),sum(len(s) for s in self.words))169                    self.set_output(message, "maroon")170                    self.display_sent = []171                    self.max_tags = len(self.words[self.sent_num])172                    self.tag_sent = self.tags[self.sent_num]173                    for jj in range(self.max_tags):174                        self.display_sent.append(self.words[self.sent_num][jj]+'('+str(jj)+')')175                    message = '\n\nSentence{}: {}\n'.format(self.sent_num, ' '.join(self.display_sent))176                    message += 'Current tags: %s\n'%' '.join(self.tags[self.sent_num])177                    self.set_output(message, "blue")178                    self.OutputText.AppendText("Input the total actions and their indices:\n")179        180        else:181            self.num = []182            tags = []183            if temp_in:184                if temp_in[0] == 'a': #ä¿®æ¹æ´ä¸ªå¥åçtag185                    if temp_in[1] == 'b': #ä¿®æ¹æ´ä¸ªå¥åçtag为å
¨0186                        self.tag_sent = [0]*len(self.tag_sent)187                    else:188                        self.tag_sent = temp_in[1:]189                    self.OutputText.AppendText('Current tag: %s\n'%' '.join(self.tag_sent))190                    self.InputText.Clear()191                    return192                new_temp_in = input_str.split(',')193                assert len(new_temp_in) == 2194                tag0 = new_temp_in[0].split()  #å¦å®æ ç¾195                tag1 = new_temp_in[1].split()  #å¨ä½çè¯æ ç¾196                self.num = [len(tag0), len(tag1)]197                tags.append([int(t) for t in tag0])198                tags.append([int(t) for t in tag1])199200            if not self.num:201                self.OutputText.AppendText("\n----------No actions to be tag----------\n")202                insert = "insert into "+self.table+" values("+str(self.text_num)+','+\203                    str(self.sent_num)+',"'+' '.join(self.words[self.sent_num])+'","'+\204                    ' '.join(self.tag_sent)+'")'205                cur.execute(insert)206                db.commit()207            else:208                for kk in range(self.num[0]):209                    idx = tags[0][kk]210                    self.tag_sent[idx] = '2'  #æ è®°å¦å®å¨ä½211                    self.OutputText.AppendText('\nTagged negative action: {} {} {} {}'.format(212                        str(self.words[self.sent_num][idx]), str(self.words[self.sent_num][idx+1]), 213                        str(self.tag_sent[idx]), str(self.tag_sent[idx+1])))214                for kk in range(self.num[1]):215                    idx = tags[1][kk]216                    self.tag_sent[idx] = '3'  #æ è®°å¨ä½çè¯217                    self.OutputText.AppendText('\nTagged action pair: {} {} {} {}'.format(218                        str(self.words[self.sent_num][idx-1]), str(self.words[self.sent_num][idx]), 219                        str(self.tag_sent[idx-1]), str(self.tag_sent[idx])))220221                insert = 'insert into {} values({},{},"{}","{}")'.format(self.table, self.text_num, 222                    self.sent_num, ' '.join(self.words[self.sent_num]), ' '.join(self.tag_sent))223                self.OutputText.AppendText('\nTagged sentences: [{}]'.format(' '.join(self.tag_sent)))224                cur.execute(insert)225                db.commit()226227            self.sent_num += 1228            if self.sent_num >= len(self.words):229                self.text_num += 1230                if self.text_num >= self.total_text:231                    end_time = time.time()232                    self.OutputText.AppendText('Total time cost: %ds'%(end_time-start_time))233                    print 'Total time cost: %ds'%(end_time-start_time)234                    wx.Exit()235                    self.exit_flag = True236                else:237                    self.sent_num = 0238                    self.get_text_from_database()239                    message = "\n\n\n------------------- A new text is starting ------------------\n"240                    message += "\n***** Text name: %s *****"%(self.home_dir+str(self.text_num)+'.txt')241                    message += "\nTotal sentences: %d\242                        Total words: %d\n" % (len(self.words),sum(len(s) for s in self.words))243                    self.set_output(message, "maroon")244245            if not self.exit_flag:246                self.pointer = self.OutputText.GetInsertionPoint()247                self.display_sent = []248                self.max_tags = len(self.words[self.sent_num])249                self.tag_sent = self.tags[self.sent_num]#['0' for col in range(self.max_tags)]250                for jj in range(self.max_tags):251                    self.display_sent.append(self.words[self.sent_num][jj]+'('+str(jj)+')')252                message = '\n\nSentence{}: {}\n'.format(self.sent_num, ' '.join(self.display_sent))253                message += 'Current tags: %s\n'%' '.join(self.tags[self.sent_num])254                self.set_output(message, "blue")255                self.OutputText.AppendText("Input the total actions and their indices:\n")256                257        self.InputText.Clear()258            259            260    def Search_Button(self, event):261        cur.execute('select * from '+self.table)#éæ©table tag_actions262        self.result = cur.fetchall()263        self.OutputText.AppendText("\nTotal records: %d"%len(self.result))264        self.OutputText.AppendText("\nHow many records do you want to display:\265            \nA for all records \n L for last ten records \n D for delete last record\n ")266        self.search_flag = True267           268269    def ShowAll_Button(self, event):270        self.OutputText.AppendText(271            "\n-------------------------All Records In The Database-------------------------\n")272        self.OutputText.AppendText("\nTotal records: %d"%len(self.result))273        for detail in self.result:274            self.OutputText.AppendText('\n'+str(detail))275        self.OutputText.AppendText("\nTotal records: %d"%len(self.result))276        self.OutputText.AppendText(277            "\n-------------------------------End Of Display--------------------------------\n")278        self.search_flag = False279        280        if self.start_flag:281            message = '\n\nSentence{}: {}\n'.format(self.sent_num, ' '.join(self.display_sent))282            self.set_output(message, "blue")283            self.OutputText.AppendText("Input the indexs and amount of actions in this sentence:\n")284        else:285            self.OutputText.AppendText("Input text_num and sent_num:\n")286    287288    def ShowLast10_Button(self, event):289        self.OutputText.AppendText(290            "\n----------------------------Last Ten Records-------------------------------\n")291        if len(self.result) >= 10:292            start = len(self.result)-10293        else:294            start = 0295        for di in range(start,len(self.result)):296            self.OutputText.AppendText('\n'+str(self.result[di]))297        self.OutputText.AppendText(298            "\n-----------------------------End Of Display--------------------------------\n")299        self.search_flag = False300        301        if self.start_flag:302            message = '\n\nSentence{}: {}\n'.format(self.sent_num, ' '.join(self.display_sent))303            self.set_output(message, "blue")304            self.OutputText.AppendText("Input the indexs and amount of actions in this sentence:\n")305        else:306            self.OutputText.AppendText("Input text_num and sent_num:\n")307    308309    def Delete_Button(self, event):310        self.delete_flag = True311        message = "\nPlease input text_num and sent_num in the Search input box:\n"312        self.set_output(message, "red")313    314315    def Search_Input(self, event):316        if self.delete_flag:317            s = self.SearchText.GetValue().encode("ascii")318            temp_in = s.split()319            if len(temp_in)!=2:320                message = '\nText_num out of range. Please input again:\n'321                self.set_output(message, "red")322                self.SearchText.Clear()323            else:324                tn = temp_in[0]325                sn = temp_in[1]326                delete = "delete from "+self.table+" where text_num="+tn+" and sent_num="+sn327                self.OutputText.AppendText('\ndelete'+delete+'\n')328                cur.execute(delete)329                db.commit()330                cur.execute('select * from '+self.table)#éæ©table tag_actions331                result = cur.fetchall()332                self.OutputText.AppendText(333                    "\n----------------------------Last Ten Records-------------------------------\n")334                if len(result) >= 10:335                    start = len(result)-10336                else:337                    start = 0338                for di in range(start,len(result)):339                    self.OutputText.AppendText('\n'+str(result[di]))340                self.OutputText.AppendText(341                    "\n-----------------------------End Of Display--------------------------------\n")342                343                self.delete_flag = False344                self.start_flag = False345                self.SearchText.Clear()346                self.OutputText.AppendText("Input text_num and sent_num:\n")347                348        elif self.change_flag:349            s = self.SearchText.GetValue().encode("ascii")350            self.home_dir = s351            self.OutputText.AppendText('\nYour input: %s\n'%s)352            self.OutputText.AppendText(353                '\nPlease input a new table_name and text_num in Search input box\n')354            self.change_flag = False355            self.SearchText.Clear()356        357        elif self.table_flag:358            s = self.SearchText.GetValue().encode("ascii").split()359            if len(s) != 2:360                self.OutputText.AppendText('\nWrong input!! Please input again.\n')361                self.SearchText.Clear()362            else:363                if s[0][0:-1] != 'tag_actions':364                    self.OutputText.AppendText('\nWrong table name!! Please input again.\n')365                    self.SearchText.Clear()366                else:367                    self.table = s[0]368                    self.total_text = int(s[1])369                    self.SearchText.Clear()370                    self.OutputText.AppendText('\nNew table_name: %s  total_text: %s\n'%(s[0],s[1]))371                    self.table_flag = False372                    self.text_num = 0373                    self.sent_num = 0374                    self.num = 0375                    self.max_tags = 0376                    self.words = []377                    self.tag_sent = []378                    self.display_sent = []379                    self.start_flag = False380                    self.search_flag = False381                    self.delete_flag = False382                    self.OutputText.SetValue("*****System reboot finishd.*****\n")383                    message = "Input text_num and sent_num:\n"384                    self.set_output(message, "red")385        386        else:387            self.SearchText.Clear()388            message = "\nYou should not input here now!\n"389            self.set_output(message, "red")390391    def Change_dir_Button(self, event):392        self.OutputText.AppendText('\nCurrent home_dir is %s\n' % self.home_dir)393        self.OutputText.AppendText('\nPlease input a new home_dir in Search input box\n')394        self.change_flag = True395        self.table_flag = True396397    def Exit_Button(self, event):398        print '\nText_num: %d; Sentence_num: %d' %(self.text_num,self.sent_num)399        end_time = time.time()400        self.OutputText.AppendText('\nText_num: %d; Sentence_num: %d' %(self.text_num,self.sent_num))401        self.OutputText.AppendText('Total time cost: %ds'%(end_time-start_time))402        print 'Total time cost: %ds'%(end_time-start_time)403        print '\nCurrent time is %s\n'%time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time()))404        wx.Exit()405406    def Reboot_Button(self, event):407        self.text_num = 0408        self.sent_num = 0409        self.num = 0410        self.max_tags = 0411        self.words = []412        self.tag_sent = []413        self.display_sent = []414        self.start_flag = False415        self.search_flag = False416        self.delete_flag = False417        self.OutputText.SetValue("*****System reboot finishd.*****\n")418        message = "Input text_num and sent_num:\n"419        self.set_output(message, "red")420        421        422if __name__ == '__main__':423    #import sys424    #reload(sys)425    #sys.setdefaultencoding('gb18030')426    #import pdb427    #pdb.set_trace()428    start_time = time.time()429    db = mysql.connector.connect(user='fengwf',password='123',database='test')430    cur = db.cursor()431    app = wx.PySimpleApp()432    frame = TextFrame()433    frame.Show()
...tekkin.js
Source:tekkin.js  
1$(document).ready(function(){2    3    var login_user_id = $("#hidLoginID").val();4    var img_src = "../public/image/JPG/ã¯ã¬ã¼ã³ã¢ã¤ã³ã³.jpeg";5    var url = "forge/tekkin";6    var content_name = "éçéé管ç";7    recordAccessHistory(login_user_id,img_src,url,content_name);8    9    $('#item').select2({width: '30%',placeholder: "Select Project",dropdownAutoWidth : true, allowClear: true,});10    LoadComboData();11});12function LoadComboData()13{14    $.ajax({15        url: "../forge/getData",16        type: 'post',17        data:{_token: CSRF_TOKEN,message:"getComboData"},18        success :function(data) {19            if(data != null){20               //BindComboData(data["projects"],"project");21               BindComboData(data["items"],"item");22               //BindComboData(data["versions"],"version");23            }                                 24        },25        error:function(err){26            console.log(err);27        }28    });  29}30function BindComboData(data,comboId){31    var appendText = "";32    $.each(data,function(key,value){      33        value["name"] = value["name"].trim();34        if(value["name"]== "")return;           35        appendText +="<option value='"+JSON.stringify(value)+"'>"+value["name"]+"</option>";      36    });37    $("select#"+comboId+" option").remove();38    $("#"+comboId).append(appendText).multiselect("reload");39}40function DisplayTekkinData(){41    ShowLoading();42    43    var itemSelectedCount = $('#item option:selected').length;44    if(itemSelectedCount != 1){45        alert("Please select just one project!");return;46    }47    $('#item option:selected').each(function(){           48        var valArr =JSON.parse($(this).val());                     49        var item_id = valArr.id;50        $.ajax({51            url: "../forge/getData",52            type: 'post',53            data:{_token: CSRF_TOKEN,message:"getTekkinData",item_id:item_id},54            success :function(data) {55                // console.log(data);56                if(data != null){               57                    // CreateColumnTekkinTable_old(data);58                    59                    var totalVolumeList = OrganizeLevelTekkinData(data);60                    org_total = {};61                    org_total = totalVolumeList;62                    CreateColumnTekkinTable(totalVolumeList);63                }64                65                HideLoading();66            },67            error:function(err){68                console.log(err);69                HideLoading();70            }71        });  72    });73}74function CreateColumnTekkinTable_old(data){75    var appendText = "";76    appendText += "<tr>";77    appendText += "<th>No.</th>";78    appendText += "<th>element_id</th>";79    appendText += "<th>level</th>";80    appendText += "<th>start_weight(t)</th>";81    appendText += "<th>center_weight(t)</th>";82    appendText += "<th>end_weight(t)</th>";83    appendText += "<th>total(t)</th>";84    appendText += "<th>category</th>"; 85    appendText += "<th>phase</th>";86    appendText += "</tr>";87    88    var count = 0;89   $.each(data,function(key,row){90       count++;91       appendText += "<tr>";92       appendText += "<td>"+count+".</td>";93       appendText += "<td>"+row["element_id"]+"</td>";94       appendText += "<td>"+row["level"]+"</td>";95       appendText += "<td>"+row["start_weight"]+"</td>";96       appendText += "<td>"+row["center_weight"]+"</td>";97       appendText += "<td>"+row["end_weight"]+"</td>";98       appendText += "<td>"+row["total"]+"</td>";99       appendText += "<td>"+row["category"]+"</td>";100       appendText += "<td>"+row["phase"]+"</td>";101       appendText += "</tr>";102   });103   $("#tblTekkinData tr").remove();104   $("#tblTekkinData").append(appendText);105}106function CreateColumnTekkinTable(totalVolumeList){107    var appendText = "";108    var total_volume = Math.round(totalVolume * 100) / 100;   //å°æ°ç¹ç¬¬ä¸ä½ä»¥ä¸åæ¨äºå
¥109    appendText += "<div class='sidebar'>";110        appendText += "<div id='tekkinTotal'>";111            appendText += "<h5>ç·éé "+total_volume.toString()+" [t]</h5>";112        appendText += "</div>";     //tekkinTotal113        114        appendText += "<div id='levelDiv'>";115            appendText += "<ul class='levelList list1'>";116            117            var cnt = 0;118            for(var key in totalVolumeList) {119                if(key == ""){ continue; }120                121                var total = 0.0;122                for(var keyOrg in organizeData) {123                    if(keyOrg === totalVolumeList[key]["level"]){124    125                        var organizeLevelData = organizeData[keyOrg];126                        for(var key1 in organizeLevelData) {127                            var tmp_total = organizeLevelData[key1]["total"];128                            tmp_total = parseFloat(tmp_total);129                            if(isNaN(tmp_total)){130                                tmp_total = 0.0;131                            }132                            total += tmp_total;133                        }134                        break;135                    }136                }137                138                total = Math.round(total * 100) / 100;139                cnt++;140                // var total1 = Math.round(totalVolumeList[key]["total"] * 100) / 100;   //å°æ°ç¹ç¬¬ä¸ä½ä»¥ä¸åæ¨äºå
¥141                142                appendText += "<li>";143                    // appendText += "<div class='levelElement' onClick='createTekkinTable("+totalVolumeList[key]['level'].toString()+","+cnt.toString()+")'>";144                    appendText += "<div id='"+cnt.toString()+"_"+totalVolumeList[key]['level'].toString()+"' class='levelElement'>";145                        appendText += "<div>"+totalVolumeList[key]["level"]+"</div>";146                        appendText += "<div style='margin-left:auto;'>"+total.toString()+" [t]</div>";147                    appendText += "</div>";148                appendText += "</li>";149            }150            151            appendText += "</ul>";152        appendText += "</div>";     //levelDiv153        154    appendText += "</div>";     //sidebar155    156    appendText += "<div id='tekkinTbl' class='main'>";157    appendText += "</div>";     //main158    $("#tekkinData div").remove();159    $("#tekkinData").append(appendText);160    161    $('.levelElement').on('click', function(){162        $('.levelElement').removeClass('active');163        $(this).addClass('active');164        165        var tmpID = $(this)[0].getAttribute('id');166        tmpID = tmpID.split("_");167        168        createTekkinTable(tmpID[1], tmpID[0]);169    });170}171function createTekkinTable(levelName, id){172    var appendText = "";173    174    appendText += "<div class='matrix-table mt-body'>";175        appendText += "<div style='margin:0 auto 5vh auto;'>";176        var category_total = {};177        for(var keyLevel in org_total){178            if(keyLevel === levelName){179                category_total = org_total[keyLevel]["category_total"];180            }181        }182        183        var count = 0;184        for(var keyTotal in category_total){185            count++;186            var total = 0.0;187            if(!isNaN(category_total[keyTotal])){188                total = Math.round(category_total[keyTotal] * 100) / 100;   //å°æ°ç¹ç¬¬ä¸ä½ä»¥ä¸åæ¨äºå
¥189            }190            191            var categoryTotal = 0.0;192            for(var keyOrg in organizeData) {193                194                if(keyOrg === levelName){195                    196                    var orgLevelData = organizeData[keyOrg];197                    198                    for(var k in orgLevelData) {199                        if(orgLevelData[k]["category"] === keyTotal){200                            var tmp_total = orgLevelData[k]["total"];201                            tmp_total = parseFloat(tmp_total);202                            if(isNaN(tmp_total)){203                                tmp_total = 0.0;204                            }205                            categoryTotal += tmp_total;206                        }207                    }208                    209                    break;210                }211            }212            categoryTotal = Math.round(categoryTotal * 100) / 100;213    214            appendText += "<input id='acd-check"+count+"' class='acd-check' type='checkbox'>";215            appendText += "<label class='acd-label' for='acd-check"+count+"'>";216                appendText += "<p>"+keyTotal+"<span style='float:right;margin-right:52px;'>"+categoryTotal+"</span></p>";217            appendText += "</label>";218            219            appendText += "<div class='acd-content'>";220                appendText += "<div class='tblField'>";221                222                    appendText += "<table class='tblTekkinData'>";223                    224                        appendText += "<thead>";225                            appendText += "<tr>";226                                appendText += "<th class='trNumber'>No.</th>";227                                appendText += "<th class='trElementID'>element_id</th>";228                                appendText += "<th class='trWeight'>start_weight[t]</th>";229                                appendText += "<th class='trWeight'>center_weight[t]</th>";230                                appendText += "<th class='trWeight'>end_weight[t]</th>";231                                appendText += "<th class='trTotal'>total[t]</th>";232                                appendText += "<th class='trPhase'>phase</th>";233                            appendText += "</tr>";234                        appendText += "</thead>";235    236                        appendText += "<body>";237    238            for(var keyOrg in organizeData) {239                if(keyOrg === levelName){240                    var cnt = 0;241                    var organizeLevelData = organizeData[keyOrg];242                    243                    for(var key in organizeLevelData) {244                        245                        if(organizeLevelData[key]["category"] === keyTotal){246                            cnt++;247                            appendText += "<tr>";248                                appendText += "<td class='trNumber'>"+cnt.toString()+"</td>";249                                appendText += "<td class='trElementID'>"+organizeLevelData[key]["element_id"]+"</td>";250                                appendText += "<td class='trWeight'>"+organizeLevelData[key]["start_weight"]+"</td>";251                                appendText += "<td class='trWeight'>"+organizeLevelData[key]["center_weight"]+"</td>";252                                appendText += "<td class='trWeight'>"+organizeLevelData[key]["end_weight"]+"</td>";253                                appendText += "<td class='trTotal'>"+organizeLevelData[key]["total"]+"</td>";254                                appendText += "<td class='trPhase'>"+organizeLevelData[key]["phase"]+"</td>";255                            appendText += "</tr>";256                        }257                    }258                }259            }260                        261                        appendText += "</body>";262                    appendText += "</table>";263                    264                appendText += "</div>";     //tblField265            appendText += "</div>";266            267        }   //for categoryList268        appendText += "</div>";269    appendText += "</div>";     //matrix-table mt-body270    271    $("#tekkinTbl div").remove();272    $("#tekkinTbl").append(appendText);273    274    // var tmpb = $("#tekkinTbl");275    // console.log("tmpb.height:"+tmpb.height());276    277    278    // $('.acd-check').css("display","none");279    // $('.acd-label').css({"background":"#0068b7", "color":"#fff", "display":"block","margin-bottom":"1px","padding":"10px","position":"relative"});280    // $('.acd-label:after').css({"background":"#00479d", "box-sizing":"border-box", "content":"'\f067'", "display":"block","font-family":"'Font Awesome 5 Free'","height":"40px","padding":"10px 20px","position":"absolute", "right":"0", "top":"0px"});281    // $('.acd-content').css({"display":"block","height":"0","opacity":"0","padding":"0 10px","transition":".5s","visibility":"hidden"});282    // $('.acd-check:checked + .acd-label:after').css("content","'\f068'");283    // $('.acd-check:checked + .acd-label + .acd-content').css({"height":"750px","opacity":"1","padding":"10px","visibility":"visible"});284    // $('.acd-check:checked + .acd-label + .acd-content').css("height","100px");285    // $('.acd-check:checked').css({"height":"500px","opacity":"1","padding":"10px","visibility":"visible"});286    // $('.acd-label').css({"height":"500px","opacity":"1","padding":"10px","visibility":"visible"});287    // $('.acd-content').css({"height":"500px","opacity":"1","padding":"10px","visibility":"visible"});288    289    // if($('.acd-check').is(':checked')){290    //     $('.acd-check:checked').css({"height":"500px","opacity":"1","padding":"10px","visibility":"visible"});291    //     $('.acd-label').css({"height":"500px","opacity":"1","padding":"10px","visibility":"visible"});292    //     $('.acd-content').css({"height":"500px","opacity":"1","padding":"10px","visibility":"visible"});293    // }294    // $('.acd-label p').css("margin","0 0 0 0");295}296var org_total = {};297var organizeData = [];298var totalVolume = 0.0;299function OrganizeLevelTekkinData(data){300    301    organizeData = [];302    var organizeTotalData = [];303    var organizeDataEachLevel = [];304    var levelList = [];305    totalVolume = 0.0;306    307    data.sort(function(a, b) {308        return (a.level < b.level) ? -1 : 1;309    });310    var index = 0;311    var idx = 0;312    var tmpTotal = 0.0;313    var preTotal = 0.0;314    var preLevel = "";315    var categoryList = [];316    var preCategory = "";317    var totalCategoryList = [];318    var cnt = 0;319    var datalen = Object.keys(data).length;320    $.each(data,function(key,row){321        322        var level = row["level"] == "" || row["level"] == undefined ? "empty" : row["level"];323        var element_id    = row["element_id"];324        var start_weight  = row["start_weight"]  == "" || row["start_weight"]  == undefined ? "0.00" : row["start_weight"];325        var center_weight = row["center_weight"] == "" || row["center_weight"] == undefined ? "0.00" : row["center_weight"];326        var end_weight    = row["end_weight"]    == "" || row["end_weight"]    == undefined ? "0.00" : row["end_weight"];327        var total         = row["total"]         == "" || row["total"]         == undefined ? "0.00" : row["total"];328        var fTotal = 0.0;329        if(fTotal !== "0"){330            fTotal = parseFloat(total);331        }332        if(isNaN(fTotal)){333            fTotal = 0.0;334        }335        var category = row["category"];336        var phase = row["phase"];337        338        var tmpObj = {};339        tmpObj["level"] = level;340        tmpObj["category"] = category;341        tmpObj["element_id"] = element_id;342        tmpObj["start_weight"] = start_weight;343        tmpObj["center_weight"] = center_weight;344        tmpObj["end_weight"] = end_weight;345        tmpObj["total"] = total;346        tmpObj["phase"] = phase;347        tmpTotal += fTotal;348        categoryList.push(category);349        350        if(cnt === 0){351            preLevel = level;352            preCategory = category;353            totalCategoryList[category] = 0.0;354        }else if(cnt === (datalen -1)){355            preTotal += fTotal;356            organizeDataEachLevel[idx] = tmpObj;357        }358        359        if(preLevel != level || cnt === (datalen -1)){360            organizeData[preLevel] = organizeDataEachLevel;361            var tmpCategoryList = Array.from(new Set(categoryList));362            var tmp = {};363            tmp["level"] = preLevel;364            tmp["total"] = preTotal;365            tmp["category"] = tmpCategoryList;366            tmp["category_total"] = totalCategoryList;367            organizeTotalData[preLevel] = tmp;368            369            index++;370            idx = 0;371            tmpTotal = 0.0;372            preTotal = 0.0;373            preLevel = level;374            organizeDataEachLevel = [];375            totalCategoryList = [];376        }377        378        if(preCategory !== category){379            totalCategoryList[category] = fTotal;380            preCategory = category;381        }else{382            totalCategoryList[category] += fTotal;    383        }384        preTotal += fTotal;385        organizeDataEachLevel[idx] = tmpObj;386        idx++;387        cnt++;388        totalVolume += fTotal;389        390    });391    return organizeTotalData;392}393function DisplayTekkinPopup(){394    $("#formulaPopup").css("z-index", "5000");395    $("#formulaPopup").css({ visibility: "visible",opacity: "1"});396    $("#formulaPopup").draggable();397}398function DownloadTekkinExcel()399{400    var item_id;401    var itemSelectedCount = $('#item option:selected').length;402    if(itemSelectedCount != 1){403        alert("Please select just one project!");return;404    }405     $('#item option:selected').each(function(){   406            var valArr =JSON.parse($(this).val());407             item_id = valArr.id;408        409     });410    window.location="/iPD/forge/excelDownload?item_id="+item_id;411}412function ClosePopup(){413    $("#formulaPopup").css({ visibility: "visible",opacity: "0"});...customUI1.py
Source:customUI1.py  
...tekkinVolumeOverview.js
Source:tekkinVolumeOverview.js  
1var CSRF_TOKEN = $('meta[name="csrf-token"]').attr('content');2$(document).ready(function(){3    $.ajaxSetup({4        cache:false5    });6    7    $("#project").select2({8        dropdownAutoWidth: true,9        width: 500,10        placeholder:'Select Folders',11        selectedIndex:-112    });13    $("#item").select2({14        dropdownAutoWidth: true,15        width: 500,16        maxPlaceholderWidth:150,17        maxWidth:300,18        placeholder:'Select Projects',19        selectAll : true20    });21    $("#version").select2({22        dropdownAutoWidth: true,23        width: 500,24        maxPlaceholderWidth:150,25        maxWidth:300,26        placeholder:'Select Versions',27        selectAll : true28    });29    30    $("#category").select2({31        dropdownAutoWidth: true,32        width: 150,33        maxPlaceholderWidth:150,34        maxWidth:150,35        placeholder:'Select Category',36        selectAll : true37    });38    39    LoadComboData();40    $("#project").change(function() {41        ProjectChange();42    });43    $("#item").change(function() {44        //ItemChange();45    });46    if (location.hash !== '') $('a[href="' + location.hash + '"]').tab('show');47        return $('a[data-toggle="tab"]').on('shown', function(e) {48        return location.hash = $(e.target).attr('href').substr(1);49    });50});51function LoadComboData()52{53    $.ajax({54        url: "../forge/getData",55        type: 'post',56        data:{_token: CSRF_TOKEN,message:"getComboData"},57        success :function(data) {58            if(data != null){59               BindComboData(data["projects"],"project");60               BindComboData(data["items"],"item");61               BindComboData(data["versions"],"version");62            }                                 63        },64        error:function(err){65            console.log(err);66        }67    });  68}69function BindComboData(data,comboId){70    var appendText = "";71    $.each(data,function(key,value){      72        value["name"] = value["name"].trim();73        if(comboId == "version"){74            var fileName = value["name"]+"("+value["version_number"]+")";75            appendText +="<option value='"+JSON.stringify(value)+"'>"+fileName+"</option>";76        }else{77            appendText +="<option value='"+JSON.stringify(value)+"'>"+value["name"]+"</option>";78        }79        80    });81    $("select#"+comboId+" option").remove();82    $("#"+comboId).append(appendText).multiselect("reload");83}84function ProjectChange(){85    console.log("ProjectChange start");86    var folderSelectedCount = $('#project option:selected').length;87    var itemOption = "";88    var versionOption = "";89    90    if(folderSelectedCount == 1){91        var projectName = $('#project option:selected').text();92        $.ajax({93            url: "../forge/getData",94            type: 'post',95            data:{_token: CSRF_TOKEN,message:"getComboDataByProject",projectName:projectName,itemName:""},96            success :function(data) {97                // console.log(data);98                if(data != null){99                    BindComboData(data["items"],"item");100                    BindComboData(data["versions"],"version");101                    BindComboData(data["levels"],"level");102                    BindComboData(data["worksets"],"workset");103                    BindComboData(data["materials"],"material");104                    BindComboData(data["familyNames"],"familyName");105                    BindComboData(data["typeNames"],"typeName");106                }107            },108            error:function(err){109                console.log(err);110            }111        });112    }else if (folderSelectedCount > 1){113        //[TODO]è¤æ°ãã¼ã¸ã§ã³é¸ææã®æå114        LoadComboData();115    }else{116        LoadComboData();117    }       118}119function ItemChange(){120    //NOP121}122function ReportTekkinVolumeOvewview(){123    var versionSelectedCount = $('#version option:selected').length;124    var level_list = [];125    var selected_categories=[];126    var workset_list=[];127    var material_list = [];128    var familyName_list = [];129    var typeName_list = [];130    var overviewData = {"Elements":0,"Volume":0,"Materials":0,"TypeName":0,"FamilyName":0};131    var chartData = {};132    var totalData = {};133    $("#category option:selected").each(function(){134        selected_categories.push($(this).val());135    });136    $('#version option:selected').each(function(){137        var valArr =JSON.parse($(this).val());                     138        var item_id = valArr.item_id;139        $.ajax({140            url: "../forge/getData",141            type: 'post',142            data:{_token: CSRF_TOKEN,message:"getTekkinData",item_id:item_id,category_list:selected_categories},143            success :function(data) {144                //alert(data);145               console.log(data);146                if(data != null){               147                 CreateColumnTekkinTable(data);148                }                                 149            },150            error:function(err){151                console.log("error");152                console.log(err);153            }154        }); 155    });156    157    //158}159 function CreateColumnTekkinTable(data){160    var appendText = "";161     appendText += "<tr>";162     appendText += "<th>No.</th>";163     appendText += "<th>element_id</th>";164     appendText += "<th>start_diameter</th>";165     appendText += "<th>start_X_firstRowCount</th>";166     appendText += "<th>start_X_secondRowCount</th>";167     appendText += "<th>start_Y_firstRowCount</th>";168     appendText += "<th>start_Y_secondRowCount</th>";169     appendText += "<th>start_rib_diameter</th>";170     appendText += "<th>start_rib_pitch</th>";171     appendText += "<th>end_diameter</th>";172     appendText += "<th>end_X_firstRowCount</th>";173     appendText += "<th>end_X_secondRowCount</th>";174     appendText += "<th>end_Y_firstRowCount</th>";175     appendText += "<th>end_Y_secondRowCount</th>";176     appendText += "<th>end_rib_diameter</th>";177     appendText += "<th>end_rib_pitch</th>";178     appendText += "</tr>";179     180     var count = 0;181    $.each(data,function(key,row){182        count++;183        appendText += "<tr>";184        appendText += "<td>"+count+".</td>";185        appendText += "<td>"+row["element_id"]+"</td>";186        appendText += "<td>"+row["start_diameter"]+"</td>";187        appendText += "<td>"+row["start_X_firstRowCount"]+"</td>";188        appendText += "<td>"+row["start_X_secondRowCount"]+"</td>";189        appendText += "<td>"+row["start_Y_firstRowCount"]+"</td>";190        appendText += "<td>"+row["start_Y_secondRowCount"]+"</td>";191        appendText += "<td>"+row["start_rib_diameter"]+"</td>";192        appendText += "<td>"+row["start_rib_pitch"]+"</td>";193        appendText += "<td>"+row["end_diameter"]+"</td>";194        appendText += "<td>"+row["end_X_firstRowCount"]+"</td>";195        appendText += "<td>"+row["end_X_secondRowCount"]+"</td>";196        appendText += "<td>"+row["end_Y_firstRowCount"]+"</td>";197        appendText += "<td>"+row["end_Y_secondRowCount"]+"</td>";198        appendText += "<td>"+row["end_rib_diameter"]+"</td>";199        appendText += "<td>"+row["end_rib_pitch"]+"</td>";200        appendText += "</tr>";201    });202    $("#tblTekkinData tr").remove();203    $("#tblTekkinData").append(appendText);...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
