Как использовать Angular SVG круглый индикатор выполнения с размытым фоном?

0

Я работаю с угловым проектом, и у меня есть запрос GET и POST $ http в моем приложении. Я использовал перед угловой загрузкой в верхней части экрана. Но в соответствии с новым требованием мне нужно изменить текущую загрузочную панель с большой круглой загрузочной планкой с процентом внутри и размытым фоном.

Я обнаружил, что угловой индикатор скорости SVG отлично подходит для моей проблемы. Я проверил их сайт и Gitlab, но я не нашел, как я могу интегрироваться с моим действием в форме отправки? (В основном я отправляю форму на сервер, и я получаю ответ, но требуется слишком много времени, поэтому я хочу, чтобы этот круговой индикатор выполнения находился между ними)

Любая помощь будет оценена... :)

ОБНОВИТЬ

Мой HTML выглядит примерно так,

<form ng-submit="ctrl.submitSearch()">
   <input type="text">
   <input type="text">
   <input type="checkbox">

   <button> Start </button>
</form>

/* Result Table */

<table>
</table>

Пример круговой загрузочной панели (именно так я хочу) http://crisbeto.github.io/angular-svg-round-progressbar/

РЕДАКТИРОВАТЬ

в настоящее время у меня есть этот элемент индикатора выполнения,

<!--Background element when loading is in progress -->
<div class="overlay" ng-show="loading"></div>

    <!--Angular SVG circular loading bar -->
    <div class="popup"
        ng-show="loading"
        round-progress
        max="100"
        current="current"
        color="#64b8e3"
        bgcolor="#008acf"
        radius="100"
        stroke="20"
        semi="false"
        rounded="true"
        clockwise="true"
        responsive="false"
        duration="800"
        animation="easeInOutQuart">
    </div> 

И вот мой текущий CSS,

/* CSS for adding blury black background while loading is in progress */
.overlay {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  width: 100%;
  height: 100%;
  margin: 0 auto;
  padding-left: 0;
  padding-top: 0;
  z-index: 998;
  background-color: Black;
  opacity: .5;
} 

/* CSS for loading bar */
.popup {
  position: fixed;
  z-index: 999;
  padding-left: 45%;
}

Все работает отлично, за исключением положения круговой загрузочной панели, которую я хочу в центре страницы и фиксированной при прокрутке.

  • 0
    Пожалуйста, включите то, что вы уже пробовали.
  • 0
    @Paul LeBeau: Эй, Пол, я еще не написал ни одного кода для этого. Потому что я не знаю с чего начать. Чтобы быть более конкретным, позвольте мне добавить код.
Показать ещё 9 комментариев
Теги:
svg

1 ответ

1
Лучший ответ

Предполагая, что ваши сообщения асинхронны, его скрипка показывает, как вы можете это сделать.

вы устанавливаете угловые привязки следующим образом:

1) используйте ng-класс в div или другом элементе, который вы можете связать с классом blur css, в зависимости от структуры вашего кода вы можете отключить класс "blur" css на счетчике прогресса.

2) на индикаторе выполнения привязывает свойство current к переменной счетчика тиков в вашей области $.

3), когда вы отправляете сообщение, также начинайте с $ interval с функцией увеличения тика, которая повторяется до тех пор, пока вы не получите обратный вызов, который остановит инкремент, сбросит класс размытия на ваш div и заполнит таблицу результатов.

Вы упомянули, что у вас есть две должности, вы можете явно установить значение currentTicks, когда вы получите первый ответ (например, если это 50% работы, вы установили ее равной 50).

вам, вероятно, понадобится работать с некоторой магией абсолютного положения CSS, чтобы ваш индикатор прогресса отображался в точном правильном месте (и мой отображается с самого начала, но вы можете использовать связанный класс css, чтобы он отображался: none до его готовности показывать)

edit: Я не упоминал blur css, я только что снял его с BenSlight. Здесь ответ Blur-эффект на элемент div

редактировать очищенное размытие...

form.blur {
  -webkit-filter: blur(2px);
  -moz-filter: blur(2px);
  -o-filter: blur(2px);
  -ms-filter: blur(2px);
  filter: blur(2px);
}

дополнительная информация, основанная на комментариях. - после завершения вашего POST вам нужно удалить класс размытия из элемента, если вы привязали класс к угловому элементу (скажем, bgClass) $ scope.bgclass= ""; очистит его.

  • re: тайминги, проблема с использованием этой конкретной визуализации в процентах заключается в том, что вам нужно как-то знать, когда она достигнет 100%. т.е. вызовы всегда завершаются через 40 секунд, или вы каждый раз проверяете или получаете обратные вызовы с индикатором прогресса. Лучшее, что вы можете сделать с текущей настройкой, которую я изложил здесь, и удерживать ее в процентах, - это настроить количество интервалов или максимальное значение на диаграмме, чтобы оно не закончилось до завершения обработки POST.

-re: позиционируя ваш оверлей, некоторые статические css применяются к div прогресса, что делает его немного сложным, но вы можете поместить отдельный div вокруг него и применить к нему следующий стиль (опять же, вы захотите добавить этот класс к элементу, когда вы запускаете процесс, и удалите его после завершения POST) - вам, вероятно, потребуется настроить эти значения заполнения для достижения наилучших результатов. Если вы посмотрите вокруг SO, вы, вероятно, найдете более простой css css для наложений tbh. (Я обновил скрипку на примере)

.overlay {
    position: absolute;
    top: 0;
    left: 0;
    max-width: 100px;
    height: 100%;
    margin: 0 auto;
    padding-left: 40%;
    padding-top: 30%;
    z-index: 5;
}
  • 0
    прежде всего спасибо за ваш ответ. Я применил то же решение, но я не получил идеальный результат, как я хочу. Когда я применяю эффект размытия к форме, тогда все другие формы CSS разрушаются, и это выглядит ужасно. Также счетчик хода работает как предопределено. Это не соответствует времени отклика. (Я имею в виду, что прохождение круга заканчивается раньше, чем моя приведенная таблица появляется на экране). Вопрос о позиционировании круглой полосы загрузки остается открытым, и после приведенной таблицы эффект размытия все еще активен.
  • 0
    Я обновил ответ, добавив больше информации - версию этого размытия, с которой вам может быть проще работать. Но на самом деле я думаю, что без интерактивного процесса, в котором вы знаете, какой прогресс на самом деле происходит в данный момент времени или через регулярные промежутки времени, я думаю, что вам лучше просто представить размытую форму с наложенным бесконечным анимированным циклом прогресса GIF. Представление, основанное на процентах, в этом случае вводит в заблуждение и представляет собой код, который вам не нужен.
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню