feat: analytics (#1018)
* dev: initialize plane analytics * dev: plane analytics endpoint * dev: update endpoint to give data with segments as well * dev: analytics with count and effort paramters * feat: analytics endpoints * feat: saved analytics * dev: remove print logs * dev: rename x_axis to dimension in response * dev: remove color queries * dev: update query for None values * feat: analytics export * dev: update code structure send color when state or label and fix none count * dev: uncomment try catch block * dev: fix segment keyerror * dev: default analytics endpoint * dev: fix segmented results * dev: default analytics endpoint and colors for segment * dev: total issues and open issues by state * dev: segment colors * dev: fix total issue annotate * dev: effort segmentation * dev: total estimates and open estimates * fix: effort when not segmented * dev: send avatar for default analytics
This commit is contained in:
parent
fb165d080e
commit
abaa65b4b7
13 changed files with 651 additions and 5 deletions
|
|
@ -70,3 +70,5 @@ from .importer import ImporterSerializer
|
|||
from .page import PageSerializer, PageBlockSerializer, PageFavoriteSerializer
|
||||
|
||||
from .estimate import EstimateSerializer, EstimatePointSerializer, EstimateReadSerializer
|
||||
|
||||
from .analytic import AnalyticViewSerializer
|
||||
|
|
|
|||
30
apiserver/plane/api/serializers/analytic.py
Normal file
30
apiserver/plane/api/serializers/analytic.py
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
from .base import BaseSerializer
|
||||
from plane.db.models import AnalyticView
|
||||
from plane.utils.issue_filters import issue_filters
|
||||
|
||||
|
||||
class AnalyticViewSerializer(BaseSerializer):
|
||||
class Meta:
|
||||
model = AnalyticView
|
||||
fields = "__all__"
|
||||
read_only_fields = [
|
||||
"workspace",
|
||||
"query",
|
||||
]
|
||||
|
||||
def create(self, validated_data):
|
||||
query_params = validated_data.get("query_dict", {})
|
||||
if bool(query_params):
|
||||
validated_data["query"] = issue_filters(query_params, "POST")
|
||||
else:
|
||||
validated_data["query"] = dict()
|
||||
return AnalyticView.objects.create(**validated_data)
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
query_params = validated_data.get("query_data", {})
|
||||
if bool(query_params):
|
||||
validated_data["query"] = issue_filters(query_params, "POST")
|
||||
else:
|
||||
validated_data["query"] = dict()
|
||||
validated_data["query"] = issue_filters(query_params, "PATCH")
|
||||
return super().update(instance, validated_data)
|
||||
Loading…
Add table
Add a link
Reference in a new issue