|
@@ -192,18 +192,23 @@ class Apex :
|
|
@staticmethod
|
|
@staticmethod
|
|
def scalar(item):
|
|
def scalar(item):
|
|
_df = item['data']
|
|
_df = item['data']
|
|
-
|
|
|
|
- name = _df.columns.tolist()[0]
|
|
|
|
- value = _df[name].values.round(2)[0]
|
|
|
|
|
|
+ value = '0'
|
|
|
|
+ unit = ''
|
|
html = '<div class="scalar"><div class="value">:value</div><div class="label">:label</div></div>'
|
|
html = '<div class="scalar"><div class="value">:value</div><div class="label">:label</div></div>'
|
|
- if value > 999 and value < 1000000 :
|
|
|
|
- value = " ".join([str(np.divide(value,1000).round(2)),"K"])
|
|
|
|
- elif value > 999999 :
|
|
|
|
- #@ Think of considering the case of a billion ...
|
|
|
|
- value = " ".join([str(np.divide(value,1000000).round(2)),"M"])
|
|
|
|
- else:
|
|
|
|
- value = str(value)
|
|
|
|
- unit = name.replace('_',' ') if 'unit' not in item else item['unit']
|
|
|
|
|
|
+ if _df.shape[0] > 0 :
|
|
|
|
+ print (_df)
|
|
|
|
+ print ('_____________________________________')
|
|
|
|
+ name = _df.columns.tolist()[0]
|
|
|
|
+ value = _df[name].values[0]
|
|
|
|
+
|
|
|
|
+ if value > 999 and value < 1000000 :
|
|
|
|
+ value = " ".join([str(np.divide(value,1000).round(2)),"K"])
|
|
|
|
+ elif value > 999999 :
|
|
|
|
+ #@ Think of considering the case of a billion ...
|
|
|
|
+ value = " ".join([str(np.divide(value,1000000).round(2)),"M"])
|
|
|
|
+ else:
|
|
|
|
+ value = str(value)
|
|
|
|
+ unit = name.replace('_',' ') if 'unit' not in item else item['unit']
|
|
return {'html':html.replace(':value',value).replace(":label",unit)}
|
|
return {'html':html.replace(':value',value).replace(":label",unit)}
|
|
@staticmethod
|
|
@staticmethod
|
|
def column(item):
|
|
def column(item):
|
|
@@ -319,8 +324,9 @@ class Apex :
|
|
values = df[x_cols].values.round(2).tolist()
|
|
values = df[x_cols].values.round(2).tolist()
|
|
else:
|
|
else:
|
|
labels = [name.upper().replace('_',' ') for name in df.columns.tolist()]
|
|
labels = [name.upper().replace('_',' ') for name in df.columns.tolist()]
|
|
- df = df.astype(float)
|
|
|
|
- values = df.values.round(2).tolist()[0] if df.shape[1] > 1 else df.values.round(2).tolist()
|
|
|
|
|
|
+ # df = df.astype(float)
|
|
|
|
+ # values = df.values.round(2).tolist()[0] if df.shape[1] > 1 else df.values.round(2).tolist()
|
|
|
|
+ values = df[[name for name in df.columns if df[name].dtype in [float,int]] ].values.round(2).tolist()
|
|
|
|
|
|
colors = COLORS[:len(values)]
|
|
colors = COLORS[:len(values)]
|
|
options = {"series":values,"colors":colors,"labels":labels,"dataLabels":{"enabled":True,"style":{"colors":["#000000"]},"dropShadow":{"enabled":False}},"chart":{"type":"donut","width":200},"plotOptions":{"pie":{"customScale":.9}},"legend":{"position":"right"}}
|
|
options = {"series":values,"colors":colors,"labels":labels,"dataLabels":{"enabled":True,"style":{"colors":["#000000"]},"dropShadow":{"enabled":False}},"chart":{"type":"donut","width":200},"plotOptions":{"pie":{"customScale":.9}},"legend":{"position":"right"}}
|
|
@@ -343,10 +349,10 @@ class engine :
|
|
self.store_config = _config['store']
|
|
self.store_config = _config['store']
|
|
self.info = _config['analytics']
|
|
self.info = _config['analytics']
|
|
_args = self.store_config
|
|
_args = self.store_config
|
|
- if self.store_config['type'] == 'mongo.MongoWriter' :
|
|
|
|
- _args['type'] = 'mongo.MongoReader'
|
|
|
|
- else:
|
|
|
|
- _args['type'] = 'disk.SQLiteReader'
|
|
|
|
|
|
+ if 'type' not in self.store_config :
|
|
|
|
+ #
|
|
|
|
+ # This is the newer version of data-transport
|
|
|
|
+ self.store_config['context'] = 'read'
|
|
self.store_config = _args ;
|
|
self.store_config = _args ;
|
|
|
|
|
|
def filter (self,**args):
|
|
def filter (self,**args):
|
|
@@ -367,8 +373,8 @@ class engine :
|
|
# conn = lite.connect(self.store_config['args']['path'],isolation_level=None)
|
|
# conn = lite.connect(self.store_config['args']['path'],isolation_level=None)
|
|
# conn.create_aggregate("stdev",1,stdev)
|
|
# conn.create_aggregate("stdev",1,stdev)
|
|
DB_TYPE = 'mongo' if (type(self.reader) == transport.mongo.MongoReader) else 'sql'
|
|
DB_TYPE = 'mongo' if (type(self.reader) == transport.mongo.MongoReader) else 'sql'
|
|
- if DB_TYPE == 'mongo' :
|
|
|
|
- self.store_config['args']['doc'] = args['type']
|
|
|
|
|
|
+ # if DB_TYPE == 'mongo' :
|
|
|
|
+ # self.store_config['args']['doc'] = args['type']
|
|
|
|
|
|
self.reader = transport.factory.instance(**self.store_config)
|
|
self.reader = transport.factory.instance(**self.store_config)
|
|
r = []
|
|
r = []
|
|
@@ -414,20 +420,8 @@ class engine :
|
|
_analytics = [_analytics[index]]
|
|
_analytics = [_analytics[index]]
|
|
|
|
|
|
_info = list(_analytics) if 'filter' not in args else [item for item in analytics if args['filter'] == item['id']]
|
|
_info = list(_analytics) if 'filter' not in args else [item for item in analytics if args['filter'] == item['id']]
|
|
- # conn = lite.connect(self.store_config['args']['path'],isolation_level=None)
|
|
|
|
- # conn.create_aggregate("stdev",1,stdev)
|
|
|
|
- #
|
|
|
|
- # @TODO: Find a better way to handle database variance
|
|
|
|
- #
|
|
|
|
- # DB_TYPE = 'mongo' if (type(self.reader) == transport.mongo.MongoReader) else 'sql'
|
|
|
|
-
|
|
|
|
- if 'mongo' in self.store_config['type'] :
|
|
|
|
- DB_TYPE='mongo'
|
|
|
|
- else:
|
|
|
|
- DB_TYPE='sql'
|
|
|
|
- self.store_config['args']['table'] = args['type']
|
|
|
|
-
|
|
|
|
self.reader = transport.factory.instance(**self.store_config)
|
|
self.reader = transport.factory.instance(**self.store_config)
|
|
|
|
+ DB_TYPE = 'mongo' if self.store_config ['provider'] in ['mongodb','mongo'] else 'sql'
|
|
r = []
|
|
r = []
|
|
for row in _info :
|
|
for row in _info :
|
|
pipeline = row['pipeline']
|
|
pipeline = row['pipeline']
|
|
@@ -440,14 +434,22 @@ class engine :
|
|
continue
|
|
continue
|
|
if DB_TYPE == 'sql' :
|
|
if DB_TYPE == 'sql' :
|
|
query = {"sql":query}
|
|
query = {"sql":query}
|
|
|
|
+ else:
|
|
|
|
+ query = {DB_TYPE:query}
|
|
|
|
|
|
- item['data'] = self.reader.read(**query) #item)
|
|
|
|
|
|
+ _df = self.reader.read(**query) #item)
|
|
|
|
+ print (query)
|
|
|
|
+ print (self.reader)
|
|
if 'serialize' in args :
|
|
if 'serialize' in args :
|
|
|
|
|
|
# item['data'] = json.dumps(item['data'].to_dict(orient='record')) if type(item['data']) == pd.DataFrame else item['data']
|
|
# item['data'] = json.dumps(item['data'].to_dict(orient='record')) if type(item['data']) == pd.DataFrame else item['data']
|
|
- item['data'] = json.dumps(item['data'].to_dict('record')) if type(item['data']) == pd.DataFrame else item['data']
|
|
|
|
|
|
+ item['data'] = json.dumps(_df.to_dict(orient='record'))
|
|
else:
|
|
else:
|
|
- item['data'] = (pd.DataFrame(item['data']))
|
|
|
|
|
|
+ # item['data'] = (pd.DataFrame(item['data']))
|
|
|
|
+ item['data'] = _df
|
|
|
|
+ pass
|
|
|
|
+ print (_df.head())
|
|
|
|
+ break
|
|
pipeline[index] = item
|
|
pipeline[index] = item
|
|
index += 1
|
|
index += 1
|
|
#
|
|
#
|