示例#1
0
                if item[0] not in constraints or item[1] != constraints[
                        item[0]]:
                    WorkingDataCache.myLogger.debug(
                        "Cache data not validated for key {0}. Expected Value is {1}. Got {2}. Destroying it!..."
                        .format(item[0], item[1], constraints[item[0]]))
                    WorkingDataCache.removeEntry(cellId)
                    return None
            WorkingDataCache.myLogger.debug(
                "Cache data validated for {}. Using it!...".format(cellId))
            return value["data"]
        WorkingDataCache.myLogger.debug(
            "No Cache Entry found for {}".format(cellId))


#add a display Run Listener
addDisplayRunListener(
    lambda entity, options: WorkingDataCache.onNewDisplayRun(entity, options))


#common Chart Options injection decorator
def commonChartOptions(func):
    def wrapper(cls, *args, **kwargs):
        commonOptions = []
        if hasattr(cls, "handlerId") and hasattr(cls, 'commonOptions'):
            handler = cls.commonOptions.get(cls.handlerId, [])
            if callable(handler):
                handler = handler(cls)
            commonOptions += handler
            fctSet = set()
            for cl in reversed(inspect.getmro(cls.__class__)):
                if hasattr(cl, func.__name__):
                    f = getattr(cl, func.__name__)
# -------------------------------------------------------------------------------
# Copyright IBM Corp. 2017
# 
# Licensed under the Apache License, Version 2.0 (the 'License');
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# 
# http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an 'AS IS' BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# -------------------------------------------------------------------------------
from pixiedust.display.display import *
from pixiedust.display import addDisplayRunListener

#add a display Run Listener 
addDisplayRunListener( lambda entity, options: onNewDisplayRun(entity, options) )

activesStreamingEntities = {}
def onNewDisplayRun(entity, options):
    if "cell_id" in options and "showchrome" in options:
        if options["cell_id"] in activesStreamingEntities:
            del activesStreamingEntities[options["cell_id"]]

class StreamingDisplay(Display):
    def __init__(self, options, entity, dataHandler=None):
        super(StreamingDisplay,self).__init__(options,entity,dataHandler)
        self.windowSize = 100
示例#3
0
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an 'AS IS' BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# -------------------------------------------------------------------------------
from pixiedust.display.display import *
from pixiedust.display import addDisplayRunListener

#add a display Run Listener
addDisplayRunListener(lambda entity, options: onNewDisplayRun(entity, options))

activesStreamingEntities = {}


def onNewDisplayRun(entity, options):
    if "cell_id" in options and "showchrome" in options:
        if options["cell_id"] in activesStreamingEntities:
            del activesStreamingEntities[options["cell_id"]]


class StreamingDisplay(Display):
    def __init__(self, options, entity, dataHandler=None):
        super(StreamingDisplay, self).__init__(options, entity, dataHandler)
        self.windowSize = 100
        constraints.pop("self",None)
        cellId = options["cell_id"]
        value = WorkingDataCache[cellId]
        if value:
            WorkingDataCache.myLogger.debug("Found cache data for {}. Validating integrity...".format(cellId))
            for item in list(value["constraints"].items()):
                if item[0] not in constraints or item[1] != constraints[item[0]]:
                    WorkingDataCache.myLogger.debug("Cache data not validated for key {0}. Expected Value is {1}. Got {2}. Destroying it!...".format(item[0], item[1], constraints[item[0]]))
                    WorkingDataCache.removeEntry(cellId)
                    return None
            WorkingDataCache.myLogger.debug("Cache data validated for {}. Using it!...".format(cellId))
            return value["data"]
        WorkingDataCache.myLogger.debug("No Cache Entry found for {}".format(cellId))

#add a display Run Listener 
addDisplayRunListener( lambda entity, options: WorkingDataCache.onNewDisplayRun(entity, options) )

#common Chart Options injection decorator
def commonChartOptions(func):
    def wrapper(cls, *args, **kwargs):
        commonOptions = []
        if hasattr(cls, "handlerId") and hasattr(cls, 'commonOptions'):
            handler = cls.commonOptions.get(cls.handlerId, [])
            if callable(handler):
                handler = handler(cls)
            commonOptions += handler
            fctSet = set()
            for cl in reversed(inspect.getmro(cls.__class__)):
                if hasattr(cl, func.__name__):
                    f = getattr(cl, func.__name__)
                    if f not in fctSet: