Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #31 (permalink)  
Старый 04.01.2016, 19:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

kingstakh,
<!DOCTYPE html>
<html ng-app="app">
<head>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script>
  <meta charset="utf-8">
  <title>Расписание</title>
<script>
 var c = {
    formatTime: function(b) {
        b = Math.floor(b / 1E3);
        var a = Math.floor(b / 60),
            d = Math.floor(a / 60);
        b %= 60;
        a %= 60;
        return c.two(d % 24) + " час. " + c.two(a) + " мин. " + c.two(b) + " сек. "
    },
    two: function(b) {
        return (9 < b ? "" : "0") + b
    }
};
angular.module("app", [])
  //Часы
.controller("TimeCtrl", function($scope, $interval) {
  var tick = function() {
    $scope.clock = Date.now();
  }
  tick();
  $interval(tick, 1000);
})

.controller("TabsDemoCtrl", function($scope) {
    $scope.work = '6:00, 8:45, 12:00, 12:10, 12:35, 23:37'; // Рабочие дни
    $scope.weekend = '6:00, 8:45, 13:00, 14:10, 15:35, 23:50'; // Выходные дни
    $scope.fn = function ()
    {  function foo(data) {
        var el = data.match(/\d+/g);
        var date = new Date;
        date.setHours(+el[0], +el[1],0,0);
        date = date.getTime() - (new Date).getTime();
        return data + ' ' + (date < 0 ? "Автобус ушел" : "Осталось : " + c.formatTime(date));

    }
       $scope.myArray = $scope.work.split(',').map(foo)
       $scope.arrString = $scope.weekend.split(',').map(foo)
       window.setTimeout($scope.fn,1000) // Вывод данных в приложении работает
    }
   $scope.fn()

});
</script>
</head>
<body>
<h3 ng-controller="TimeCtrl">Сейчас {{ clock | date:'HH:mm:ss'}}</h3>
  <ul ng-controller="TabsDemoCtrl">
    <li ng-repeat="bustime in myArray track by $index">
       {{bustime}}
    </li>
</ul>
  <ul ng-controller="TabsDemoCtrl">
Здесь для выходных дней
    <li ng-repeat="bustime in arrString track by $index">
       {{bustime}}
    </li>
</ul>

</body>
</html>

Последний раз редактировалось рони, 05.01.2016 в 10:11.
Ответить с цитированием
  #32 (permalink)  
Старый 04.01.2016, 21:15
Профессор
Отправить личное сообщение для Keramet Посмотреть профиль Найти все сообщения от Keramet
 
Регистрация: 30.12.2015
Сообщений: 194

А не проще ли всё перевести в минуты (и расписание, и текущее время), а при отображении опять перевести в формат "чч:мм"?
Ответить с цитированием
  #33 (permalink)  
Старый 04.01.2016, 21:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Keramet,
не понял, может вы код напишите?
Ответить с цитированием
  #34 (permalink)  
Старый 04.01.2016, 21:45
Профессор
Отправить личное сообщение для Keramet Посмотреть профиль Найти все сообщения от Keramet
 
Регистрация: 30.12.2015
Сообщений: 194

рони,
я б с удовольствием, но пока только учусь )) и на ваших примерах тоже.
Мне просто кажется, проще представить всё в минутах от начала суток (от 0 до 1440), чтоб не разбирать время отдельно на часы и минуты.
Например массив '6:00, 8:45, 12:00, 12:10, 12:35, 23:37' будет выглядеть как "360, 525, 720, 730, 755, 1417". Текущее время, например, 11:40 будет 700. Ну это только идея
Ответить с цитированием
  #35 (permalink)  
Старый 04.01.2016, 21:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Keramet,
ещё труднее по моему будет.
Ответить с цитированием
  #36 (permalink)  
Старый 04.01.2016, 21:58
Профессор
Отправить личное сообщение для Keramet Посмотреть профиль Найти все сообщения от Keramet
 
Регистрация: 30.12.2015
Сообщений: 194

Сообщение от рони Посмотреть сообщение
Keramet,
ещё труднее по моему будет.
Просто функцию преобразования в минуты и обратно реализовать проще париной репы.
Определить место текущего времени в массиве расписания (переведенное в минуты) тоже просто, посчитали разницу до соседнего элемента и перевели это время обратно в "чч:мм". а возиться с часами отдельно и с минутами сложнее. ИМХО

ну, профессору виднее

Последний раз редактировалось Keramet, 04.01.2016 в 22:02.
Ответить с цитированием
  #37 (permalink)  
Старый 04.01.2016, 22:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от Keramet
Просто функцию преобразования в минуты и обратно реализовать проще париной репы.
и как прицепить к этому разницу с текущим временем?
Ответить с цитированием
  #38 (permalink)  
Старый 04.01.2016, 23:48
Профессор
Отправить личное сообщение для Keramet Посмотреть профиль Найти все сообщения от Keramet
 
Регистрация: 30.12.2015
Сообщений: 194

Сообщение от рони Посмотреть сообщение
и как прицепить к этому разницу с текущим временем?
ну как-то так
var nowTime = new Date();
	var nowTimeF = 60*nowTime.getHours() + nowTime.getMinutes();
	var hours = ['6:00', '8:45', '12:00', '12:10', '12:35', '23:37'];

	function formatT(str){
		var i, h, m;
		i = str.indexOf(":");
		h = str.substring(0, i);
		m = str.substring(i + 1, str.length);
		return 60*h + 1*m;
	}
	var hoursF = hours.map(function(h) {return formatT(h);});
	
	if (nowTimeF > hoursF[hoursF.length]) alert ("Опять от меня сбежала последняя электричка...")
	else {
		for(var i = hoursF.length - 1; i >= 1; i--)  {
			if (nowTimeF > hoursF[i-1]) break;
		}
		var timeToGo = hoursF[i] - nowTimeF;
		alert("До отправления: " + Math.floor(timeToGo / 60) + "ч " + timeToGo % 60 + "мин");
	};

не так и просто, как мне казалось
Ответить с цитированием
  #39 (permalink)  
Старый 05.01.2016, 09:27
Аспирант
Отправить личное сообщение для kingstakh Посмотреть профиль Найти все сообщения от kingstakh
 
Регистрация: 21.02.2014
Сообщений: 37

Сообщение от рони Посмотреть сообщение
kingstakh,
Огромное спасибо! То что я воротил с кодом, даже выкладывать не буду, стыдно , хоть и работало через пень-колоду.

Последний раз редактировалось kingstakh, 05.01.2016 в 09:31.
Ответить с цитированием
  #40 (permalink)  
Старый 05.01.2016, 10:07
Аспирант
Отправить личное сообщение для kingstakh Посмотреть профиль Найти все сообщения от kingstakh
 
Регистрация: 21.02.2014
Сообщений: 37

Сообщение от рони Посмотреть сообщение
kingstakh,
Хм, протестировал в приложении, почему-то тоже подвисает после просмотра одной остановки и возврата к выбору другой ... Наверное что-то у меня не так
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт обратного отсчета времени Extremal1989 Общие вопросы Javascript 13 30.12.2012 11:47
Циклический отсчет времени Vor Серверные языки и технологии 0 24.02.2012 02:56
вывод времени php + javascript TTongorovortoto Ваши сайты и скрипты 2 29.10.2011 00:11
В зависимости от локального времени меняется задний фон Tchort Events/DOM/Window 3 09.08.2011 18:21
Обратный отсчет времени tenorica Общие вопросы Javascript 2 19.04.2011 23:30