Esempio n. 1
0
 def countTasks(self):
     """Count tasks statistics divided by projects"""
     self._data = DataManager.getByRange(self._fromDate, self._toDate)
     res = {}
     for date, task, projectName in self._data:
         if task == "__start__":
             self.timings.setPrevDate(None)
         
         spentSeconds = self.timings.count(date, Tasks.taskType(task))
         
         if Tasks.taskType(task) != "work":
             continue
             
         if spentSeconds:
             if projectName not in res:
                 res[projectName] = {}
                 
             if task not in res[projectName]:
                 res[projectName][task] = spentSeconds
             else:
                 res[projectName][task] += spentSeconds
     self._countAttrib([v for k in res for v in res[k].values()])
     if res:
         ret = {}
         for k in res.keys():
             ret[k] = sorted(res[k].iteritems(), key=lambda item:item[1], reverse=True)
         return ret
     else:
         return {}
Esempio n. 2
0
    def _countObject(self, objType, targetAction):
        """Generic function for calculating projects data or slacking statistics"""
        self._data = DataManager.getByRange(self._fromDate, self._toDate)
        res = {}

        for date, task, projectName in self._data:
            if task == "__start__":
                self.timings.setPrevDate(None)
            objKey = projectName if objType == "project" else task
            
            spentSeconds = self.timings.count(date, Tasks.taskType(task))

            if Tasks.taskType(task) != targetAction:
                self.timings.setPrevDate(date)
                continue

            if spentSeconds:
                if objKey not in res:
                    res[objKey] = spentSeconds
                else:
                    res[objKey] += spentSeconds
                    
        self._countAttrib(res.values())
        if res:
            return sorted(res.iteritems(), key=lambda item:item[1], reverse=True)
        else:
            return []
Esempio n. 3
0
 def btnDonePress_(self, sender):
     """On done button press"""
     if self.cbxInput.stringValue().strip():
         taskName = self.cbxInput.stringValue()
         self.appendTask(*fh.formatTaskString(*self.tasks.add(taskName, self.pbtnProject.titleOfSelectedItem())))
         self.readCounters()
         self.cbxInput.setStringValue_("")
         self.scrollToEnd()
         
         if  Tasks.taskType(taskName) == "work":
             Projects.addAutocomplete(self.pbtnProject.titleOfSelectedItem(), taskName)
         else:
             SlackingAutocompletes.add(taskName)
         self.cbxInput.addItemWithObjectValue_(taskName)
Esempio n. 4
0
 def btnDonePress_(self, sender):
     """On done button press"""
     if self.tasks.dayStarted():
         if self.cbxInput.stringValue().strip():
             taskName = self.cbxInput.stringValue()
             self.appendTask(*fh.formatTaskString(*self.tasks.add(taskName, self.pbtnProject.titleOfSelectedItem())))
             self.readCounters()
             self.cbxInput.setStringValue_("")
             self.scrollToEnd()
         
             if  Tasks.taskType(taskName) == "work":
                 Projects.addAutocomplete(self.pbtnProject.titleOfSelectedItem(), taskName)
             else:
                 SlackingAutocompletes.add(taskName)
             self.cbxInput.addItemWithObjectValue_(taskName)
     else:
         if Settings.get("showHelpMessageOnStart"):
             self.showStartHelpMessage()
         taskName = Settings.get("startPlaceholder")
         self.appendTask(*fh.formatTaskString(*self.tasks.add(taskName)))
         self.initDoneButton()