Dojo “загрузка” - сообщение

Очевидно, вам нужно преобразовать поток в преобразовании (...) в поток без ConsumerRecord. Затем вы можете вызвать окно на очищенный поток. Затем вы можете преобразовать этот поток и построить результирующую таблицу.

val cleanedStream = kafkaStream.transform(rdd => rdd.map(record => record.value))

val windowedStream = cleanedStream.window(Minutes(5),Seconds(20))

val transformedStream = windowedStream.transform(rdd => {
    val words = rdd.flatMap(line => line.split(" "))
    val pairs = words.map(word => (word, 1))
    pairs.reduceByKey((x: Int, y: Int) => (x + y))
})

transformedStream.foreachRDD { rdd =>
    rdd.toDF("word", "count").createOrReplaceTempView("words")
}
6
задан myplacedk 28 January 2009 в 20:21
поделиться

4 ответа

То, что Вы описываете, предполагает, что само додзе было уже загружено к тому времени, когда модальное dijit.Dialog появляется с загружающимся сообщением.

Теперь, обычно, додзе начинает выполняться, после того как Ваша страница полностью загружается, и Вы обычно помещали бы свой код додзе в анонимной функции, переданной как параметр dojo.addOnLoad().

Это влечет за собой, что остающаяся часть Вашей страницы (что Вы называете своими "ссылками") должна будет быть загружена через ajax (использование, например, dijit.layout.ContentPane). Тем путем додзе может выполниться, прежде чем содержание загружается, и Ваше "ожидающее" сообщение может появиться ранее.

Это могло бы быть похожим на это:

<html>

<head>
<link rel="stylesheet" href="/dojo/dijit/themes/tundra/tundra.css" type="text/css" media="screen" />
<script type="text/javascript" src="/dojo/dojo.js" djConfig="parseOnLoad:true"></script>
/* make sure that you shrinksafe together your libraries and dojo's for faster loading... */
<script type="text/javascript" src="/dojo/yourOwnDojoCompressedScripts.js"></script>
<script type="text/javascript">
   var dialog;
   dojo.addOnLoad(function(){
      dojo.require("dijit.layout.ContentPane");
      dojo.require("dijit.Dialog");
      dialog = new dijit.Dialog();
      dialog.setContent("<p>This page will be available in a tick!</p>");
      dialog.show();
   });
</script>
</head>

<body class="tundra">
   <div id="delayedContent" 
        dojoType="dijit.layout.ContentPane" 
        href="/myContentUrl"
        onLoad="dialog.hide()">
   </div>
</body>

</html>

Единственный дефект в том плане является самим додзе: ожидайте, что Ваша shrinksafed библиотека будет весить по 90K (возможно до 300K, в зависимости от того, сколько материала Вы помещаете там). На медленном соединении, которое все еще занимает значимое количество времени для загрузки. Тем не менее мы говорим о статическом 90K---, тот же пользователь загрузит его только однажды на сессию, и еще менее часто, чем, что, если Вы не торопитесь для установки соответствующий, кэшируют/истекают заголовки, когда те статические файлы подаются.

8
ответ дан 8 December 2019 в 04:10
поделиться

Я реализовал такую вещь таким образом:

Во-первых, на каждой странице, добавьте обработчик событий к любому href с классом 'медленный' присоединенный:

    dojo.addOnLoad(function() {
        dojo.query('a.slow').onclick(function() {loading(); return true;});
    });

Загружающаяся функция похожа на это:

    function loading() {
        var underlay = new dijit.DialogUnderlay({'class': 'loading'});
        underlay.show();
    }

CSS для 'загружающегося' класса похож на это:

div.loading {
    background-image: url(/images/loading.gif);
    background-repeat: no-repeat;
    background-position: center;
}

Где loading.gif хороший анимированный GIF.

4
ответ дан 8 December 2019 в 04:10
поделиться

Dojo уже имеет один такой компонент: Dojox Занятая Кнопка. Вы могли бы также интересоваться следующими статьями Sitepen: Dojo: Стандартные блоки сети (демонстрирует блокирование содержания страницы), и Реализация веб-приложения, Предварительно загружающего Наложение.

7
ответ дан 8 December 2019 в 04:10
поделиться

pierdeux получил меня на ходу с этим. Это - мой код до сих пор:

dojo.require("dijit.form.Button");
dojo.require("dijit.Dialog");

function displayWait(txtContent) {
    if (!txtContent) {
        txtContent = "Please wait...";
    }
    txtContent = "<img src=\"loading.gif\" alt=\"\" /> " + txtContent;
    var thisdialog = new dijit.Dialog({ title: "", content: txtContent });
    dojo.body().appendChild(thisdialog.domNode);
    //thisdialog.closeButtonNode.style.display='none';
    thisdialog.titleBar.style.display='none';
    thisdialog.startup();
    thisdialog.show();
}

Это - модальное окно сообщения, которое не может быть закрыто, таким образом, пользователь не может использовать другие элементы на странице. Это точно, что я попросил, таким образом, я приму ответ pierdeux.

2
ответ дан 8 December 2019 в 04:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: