def gen_json_for_line_chart(data_in,tile_id): start_time=current_date_time() end_time=current_date_time() tile_json={} tile_json["valid_time"]={ "start_time": start_time, "end_time": end_time } tile_json["tile_id"] = tile_id tile_json["keys"] = [] tile_json["cache_scope"] = "user" tile_json["key_type"] = "timestamp" tile_json["period"] = "last_7_days" tile_json["observed_time"]= { "start_time": start_time, "end_time": end_time } data_list=[] ii=0 for item in data_in: print(cyan(item,bold=True)) print(yellow(len(item),bold=True)) data_dict_item={} data_dict_item["key"]=epoch_datetime(item[0]) data_dict_item["value"]=item[1] data_list.append(data_dict_item) tile_json["data"]=data_list return(tile_json)
def gen_json_for_donut(data_in,tile_id): start_time=current_date_time() end_time=current_date_time() tile_json={} tile_json["valid_time"]={ "start_time": start_time, "end_time": end_time } tile_json["tile_id"] = tile_id tile_json["labels"] = [] tile_json["labels"].append([]) tile_json["labels"].append([]) tile_json["cache_scope"] = "org" tile_json["period"] = "last_7_days" tile_json["observed_time"]= { "start_time": start_time, "end_time": end_time } data_list=[] ii=0 key_index=0 for item in data_in: print(cyan(item,bold=True)) print(yellow(len(item),bold=True)) data_dict_item={} data_dict_item["key"]=item[0] data_dict_item["value"]=item[3] tile_json["labels"][0].append(item[2]) url=item[1] i=0 iii=0 data_dict_item["segments"]=[] for sub_item in item: print(red(i,bold=True)) entry={} if i>3 and i<len(item): entry["key"]= item[i] entry["value"]= item[i+1] entry["tooltip"]= f"{item[i]} : {item[i+1]}" entry["link_uri"]= url data_dict_item["segments"].append(entry) if item[i] not in tile_json["labels"][1]: tile_json["labels"][1].append(item[i]) if ii==0: new_key={} new_key={"key": iii,"value": item[i]} iii+=1 i+=1 i+=1 data_list.append(data_dict_item) ii+=1 tile_json["data"]=data_list return(tile_json)
def gen_json_for_bar_chart(data_in,tile_id,key_type): temps=current_date_time() tile_json={} tile_json["valid_time"]={ "start_time": temps, "end_time": temps } tile_json["tile_id"] = tile_id tile_json["keys"] = [] tile_json["cache_scope"] = "org" tile_json["key_type"] = key_type tile_json["period"] = "last_7_days" tile_json["observed_time"]= { "start_time": temps, "end_time": temps } data_list=[] ii=0 for item in data_in: print(cyan(item,bold=True)) print(yellow(len(item),bold=True)) data_dict_item={} data_dict_item["key"]=epoch_date(item[0]) url=item[1] i=0 data_dict_item["values"]=[] for sub_item in item: print(red(i,bold=True)) entry={} if i>1 and i<len(item): entry["key"]= item[i] entry["value"]= item[i+1] entry["tooltip"]= f"{item[i]} : {item[i+1]}" entry["link_uri"]= url data_dict_item["values"].append(entry) if ii==0: new_key={} new_key={"key": item[i],"label": item[i]} tile_json["keys"].append(new_key) i+=1 i+=1 data_list.append(data_dict_item) ii+=1 tile_json["data"]=data_list return(tile_json)
def new_init__(self, data=None, data_type='python'): if data is None: data = {} self.dirty = False self.data_type = data_type if '_allowed_undefined' in attrs: self._allowed_undefined = attrs['_allowed_undefined'] if '_atomic_changes' in attrs: self._atomic_changes = attrs['_atomic_changes'] # the modified field is a microsecond later than the created # this is done for testing purposes modified = lambda: current_date_time(0.001) self.fields = _Fields({ GIZMO_MODEL: String(get_qualified_instance_name(self),\ data_type=data_type, track_changes=False), GIZMO_CREATED: DateTime(value=current_date_time,\ data_type=data_type, set_max=1, track_changes=False), GIZMO_MODIFIED: DateTime(value=modified,\ data_type=data_type, track_changes=False), GIZMO_NODE_TYPE: String(self._node_type, data_type=data_type,\ track_changes=False), GIZMO_ID: String(data_type=data_type,\ track_changes=False), }) if isinstance(self, Edge): if 'out_v' in data: self.out_v = data['out_v'] del data['out_v'] else: self.out_v = None if '_outV' in data: self.outV = data['_outV'] del data['_outV'] else: self.outV = None if 'in_v' in data: self.in_v = data['in_v'] del data['in_v'] if '_inV' in data: self.inV = data['_inV'] del data['_inV'] else: self.inV = None label = data.get('label', None) if label is None: label = self._node_type self.fields[GIZMO_LABEL] = String(value=label, data_type=data_type) """" build the properties for the instance ignore things that start with an underscore and methods this is done for all of the bases first, then the actual model """ undefined = copy.deepcopy(data) def update_fields(obj): for name, field in obj.items(): if not name.startswith('_'): if isinstance(field, Field): value = field.value if name == 'active': import pudb; pu.db if name in data: value = data[name] del(undefined[name]) if name not in DEFAULT_MODEL_FIELDS: self.dirty = True kwargs = { 'value': value, 'data_type': field.data_type, 'set_max': field.set_max, 'track_changes': field.track_changes, } instance = field.__class__(**kwargs) self.fields[name] = instance elif isfunction(field) == False: setattr(self, name, field) for b in reversed(bases): update_fields(b.__dict__) update_fields(attrs) self.hydrate(undefined) if data is not None and GIZMO_ID in data: self.fields[GIZMO_ID].field_value = data[GIZMO_ID]