def generateMinimalHTML(self, sMkt, sFit, dnaUrl): """ Generate a minimal HTML version of the fittings, without any javascript or styling""" categoryList = list(sMkt.getShipRoot()) categoryList.sort(key=lambda _ship: _ship.name) count = 0 HTML = '' for group in categoryList: # init market group string to give ships something to attach to ships = list(sMkt.getShipList(group.ID)) ships.sort(key=lambda _ship: _ship.name) ships.sort(key=lambda _ship: _ship.name) for ship in ships: fits = sFit.getFitsWithShip(ship.ID) for fit in fits: if self.stopRunning: return try: dnaFit = Port.exportDna(getFit(fit[0])) HTML += '<a class="outOfGameBrowserLink" target="_blank" href="' + dnaUrl + dnaFit + '">' \ + ship.name + ': ' + \ fit[1] + '</a><br> \n' except: pyfalog.error("Failed to export line") continue finally: if self.callback: wx.CallAfter(self.callback, count) count += 1 return HTML
def fitSelected(self, event): pyfalog.debug('====== Fit Selected: ' + repr(self) + str(bool(self))) if self.parent.IsActive(self): fitID = event.fitID startup = getattr(event, "startup", False) self.activeFitID = fitID sFit = Fit.getInstance() # VEETOR TINKERING START self.mainFrame.command.Submit(cmd.GuiToggleLocalDroneStatesCommand( fitID=fitID, mainPosition=0, positions=[0])) # VEETOR TINKERING END self.updateTab() if not startup or startup == 2: # see OpenFitsThread in gui.mainFrame self.Show(fitID is not None) self.slotsChanged() sFit.switchFit(fitID) # @todo pheonix: had to disable this as it was causing a crash at the wxWidgets level. Dunno why, investigate wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,))) # VEETOR TINKERING START if self.mainFrame.options.fit is not None: fit_parsed = self.mainFrame.getActiveFit() from eos.db import getFit fit_db = getFit(fit_parsed) from service.port import Port exp = Port().exportFitStatsJson(fit_db) print(exp) sFit.deleteFit(fitID) wx.PostEvent(self.mainFrame, GE.FitRemoved(fitID=fitID)) import sys sys.exit(0) # VEETOR TINKERING END event.Skip()
def generateFullHTML(self, sMkt, sFit, dnaUrl): """ Generate the complete HTML with styling and javascript """ timestamp = time.localtime(time.time()) localDate = "%d/%02d/%02d %02d:%02d" % (timestamp[0], timestamp[1], timestamp[2], timestamp[3], timestamp[4]) HTML = """ <!DOCTYPE html> <html> <head> <title>Pyfa Fittings</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta charset="utf-8" /> <link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.css" /> <script src="https://code.jquery.com/jquery-1.11.0.min.js"></script> <script> //http://stackoverflow.com/questions/32453806/uncaught-securityerror-failed-to-execute-replacestate-on-history-cannot-be $(document).bind('mobileinit',function(){ $.mobile.changePage.defaults.changeHash = false; $.mobile.hashListeningEnabled = false; $.mobile.pushStateEnabled = false; }); </script> <script src="https://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.js"></script> <style> /* Basic settings */ .ui-li-static.ui-collapsible { padding: 0; } .ui-li-static.ui-collapsible > .ui-collapsible-content > .ui-listview, .ui-li-static.ui-collapsible > .ui-collapsible-heading { margin: 0; } .ui-li-static.ui-collapsible > .ui-collapsible-content { padding-top: 0; padding-bottom: 0; padding-right: 0; border-bottom-width: 0; } /* collapse vertical borders */ .ui-li-static.ui-collapsible > .ui-collapsible-content > .ui-listview > li.ui-last-child, .ui-li-static.ui-collapsible.ui-collapsible-collapsed > .ui-collapsible-heading > a.ui-btn { border-bottom-width: 0; } .ui-li-static.ui-collapsible > .ui-collapsible-content > .ui-listview > li.ui-first-child, .ui-li-static.ui-collapsible > .ui-collapsible-content > .ui-listview > li.ui-first-child > a.ui-btn, .ui-li-static.ui-collapsible > .ui-collapsible-heading > a.ui-btn { border-top-width: 0; } /* Remove right borders */ .ui-li-static.ui-collapsible > .ui-collapsible-heading > a.ui-btn, .ui-li-static.ui-collapsible > .ui-collapsible-content > .ui-listview > .ui-li-static, .ui-li-static.ui-collapsible > .ui-collapsible-content > .ui-listview > li > a.ui-btn, .ui-li-static.ui-collapsible > .ui-collapsible-content { border-right-width: 0; } /* Remove left borders */ /* Here, we need class ui-listview-outer to identify the outermost listview */ .ui-listview-outer > .ui-li-static.ui-collapsible .ui-li-static.ui-collapsible.ui-collapsible, .ui-listview-outer > .ui-li-static.ui-collapsible > .ui-collapsible-heading > a.ui-btn, .ui-li-static.ui-collapsible > .ui-collapsible-content { border-left-width: 0; } .ui-content { max-width: 800px !important; margin: 0 auto !important; } .ui-listview > .ui-li-static.ui-li-has-count { padding-right: 0px } </style> <script> $(document).ready(function() { var start = new Date(%d * 1000); setInterval(function() { var diff = (new Date - start) / 1000; var days = Math.floor((diff %% 31536000) / 86400); var hours = Math.floor(((diff %% 31536000) %% 86400) / 3600); var minutes = Math.floor((((diff %% 31536000) %% 86400) %% 3600) / 60); var seconds = Math.floor(((diff %% 31536000) %% 86400) %% 3600) %% 60; $('.timer').text(days+":"+hours+":"+minutes+":"+seconds+" ago"); }, 1000); $('a[data-dna]').each(function( index ) { var dna = $(this).data('dna'); if (typeof CCPEVE !== 'undefined') { // inside IGB $(this).attr('href', 'javascript:CCPEVE.showFitting("'+dna+'");');} else { // outside IGB $(this).attr('href', '%s'+dna); } }); }); </script> </head> <body> <div id="canvas" data-role="page"> <div data-role="header"> <h1>Pyfa fits</h1> </div> <div data-role="content"> <div style="text-align: center;"><strong>Last updated:</strong> %s <small>(<span class="timer"></span>)</small></div> """ % (time.time(), dnaUrl, localDate) HTML += ' <ul data-role="listview" class="ui-listview-outer" data-inset="true" data-filter="true">\n' categoryList = list(sMkt.getShipRoot()) categoryList.sort(key=lambda _ship: _ship.name) count = 0 for group in categoryList: # init market group string to give ships something to attach to HTMLgroup = '' ships = list(sMkt.getShipList(group.ID)) ships.sort(key=lambda _ship: _ship.name) # Keep track of how many ships per group groupFits = 0 for ship in ships: fits = sFit.getFitsWithShip(ship.ID) if len(fits) > 0: groupFits += len(fits) HTMLship = ( ' <li data-role="collapsible" data-iconpos="right" data-shadow="false" ' 'data-corners="false">\n' ' <h2>' + ship.name + ' <span class="ui-li-count">' + str( len(fits)) + '</span></h2>\n' ' <ul data-role="listview" data-shadow="false" data-inset="true" ' 'data-corners="false">\n' ) for fit in fits: if self.stopRunning: return try: eftFit = Port.exportEft(getFit(fit[0])) print(eftFit) HTMLfit = ( ' <li data-role="collapsible" data-iconpos="right" data-shadow="false" ' 'data-corners="false">\n' ' <h2>' + fit[1] + '</h2>\n' ' <ul data-role="listview" data-shadow="false" data-inset="true" ' 'data-corners="false">\n' ) HTMLfit += ' <li><pre>' + eftFit + '\n </pre></li>\n' HTMLfit += ' </ul>\n </li>\n' HTMLship += HTMLfit except: pyfalog.warning("Failed to export line") continue finally: if self.callback: wx.CallAfter(self.callback, count) count += 1 HTMLgroup += HTMLship + (' </ul>\n' ' </li>\n') if groupFits > 0: # Market group header HTML += ( ' <li data-role="collapsible" data-iconpos="right" data-shadow="false" data-corners="false">\n' ' <h2>' + group.groupName + ' <span class="ui-li-count">' + str(groupFits) + '</span></h2>\n' ' <ul data-role="listview" data-shadow="false" data-inset="true" data-corners="false">\n' + HTMLgroup + ' </ul>\n' ' </li>' ) HTML += """ </ul> </div> </div> </body> </html>""" return HTML
def exportEfs(self, options, callback): fit = getFit(self.mainFrame.getActiveFit()) EfsPort.exportEfs(fit, 0, callback)
def exportMultiBuy(self, options, callback): fit = getFit(self.mainFrame.getActiveFit()) Port.exportMultiBuy(fit, options, callback)
def exportXml(self, options, callback): fit = getFit(self.mainFrame.getActiveFit()) Port.exportXml([fit], None, callback)
def exportEsi(self, options, callback): fit = getFit(self.mainFrame.getActiveFit()) Port.exportESI(fit, callback)
def exportFitStats(self, options, callback): """ Puts fit stats in textual format into the clipboard """ fit = getFit(self.mainFrame.getActiveFit()) Port.exportFitStats(fit, callback)