Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.12.2015, 07:36
Аватар для Руха
Новичок на форуме
Отправить личное сообщение для Руха Посмотреть профиль Найти все сообщения от Руха
 
Регистрация: 09.11.2015
Сообщений: 1

Помогите с заданием пожалуйста!
Сделал
Вложения:
Тип файла: zip Zadanie.zip (226.3 Кб, 12 просмотров)

Последний раз редактировалось Руха, 20.12.2015 в 13:48. Причина: Не знаю как удалить тему
Ответить с цитированием
  #2 (permalink)  
Старый 19.12.2015, 19:48
Новичок на форуме
Отправить личное сообщение для left.reger Посмотреть профиль Найти все сообщения от left.reger
 
Регистрация: 19.12.2015
Сообщений: 2

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

window.onload = function() {
	"use strict";
			
	var totalSum 	= 0,	
		totatOrders = 0,
		recSum 		= 0,
		typSum		= 0,
		usersID		= [],
		noRec		= 0;
		
	var sum_2628	= 0,	// для задания 2.
		orders_2628	= 0,
		us_2628		= [],
		rec_2628	= 0;
		
	var copyOfOL 	= [],		// копия исходного массива, чтоб при сортировке его не изменять (не знаю, надо ли это??)
		tables = document.getElementsByTagName( 'table' ),		// массив всех таблиц
		toFix = function(a)	{return a.toFixed(2) + " грн."},	// форматирую данные, представляющие денежные средства
		formatObj = {											// "шаблонный" объект
				'timestamp'  : function(a) {return new Date(a * 1000).toLocaleDateString()},
				'total'		 : toFix,
				'typical'	 : toFix,
				'recommended': toFix
			};
	
	
	document.getElementById("btn").onclick = function() {		//	добавил кнопку к app.html 
		var date_26 = Date.parse("06/26/2015")/1000,
			date_29 = new Date(2015, 5, 29)/1000;	// другой способ задать дату (месяцы начинаются с 0)
			
		ordersList.forEach( function(item) {
			totalSum += item.total;
			totatOrders++;
			recSum += item.recommended;
			typSum += item.typical;
			if (usersID.indexOf(item.user_id) == -1) usersID.push(item.user_id);
			if (item.recommended === 0) noRec++;
			
			if (item.timestamp >= date_26 && item.timestamp < date_29) {
				sum_2628 += item.total;
				orders_2628++;
				if (us_2628.indexOf(item.user_id) == -1)  us_2628.push(item.user_id);
				rec_2628 += item.recommended;
			}
			copyOfOL.push(item);		
		});
	
		fillTable1();
		fillTable2();
		fillTable3();
		fillTable4();
		fillTable5();
	}
	
	function fillTable1() {	
			document.getElementById("total-sum").innerHTML 				= toFix( totalSum );
			document.getElementById("total-orders").innerHTML 				= totatOrders;
			document.getElementById("total-recommended").innerHTML 		= toFix( recSum );
			document.getElementById("total-typical").innerHTML 			= toFix( typSum );
			document.getElementById("total-customers").innerHTML 			= usersID.length;
			document.getElementById("total-without-recommended").innerHTML	= noRec;
			document.getElementById("total-without-typical").innerHTML 	= totatOrders - noRec;
		}
	
	
	function fillTable2() {
		var tdsT2 = tables[1].getElementsByTagName( 'td' );
		
		tdsT2[1].innerHTML = sum_2628.toFixed(2) + " grn";
		tdsT2[3].innerHTML = orders_2628;
		tdsT2[5].innerHTML = us_2628.length;
		tdsT2[7].innerHTML = rec_2628.toFixed(2) + " grn";
	}

	function fillTable3() {	
		var fieldsOrder = ['timestamp', 'id', 'user_id', 'total', 'typical', 'recommended'],
		// порядок вывода св-в объектов (согласно макета таблицы 3)
			tBody = tables[2].getElementsByTagName("tbody")[0],
			i, Nmax = 5;
		
		copyOfOL.sort(compare); 		//	сортируем массив по убыванию общей суммы заказа
		function compare(order1, order2) { 
			if 		( order1.total >= order2.total )	return -1;
			else									return 1;
		}
				
		for (i = 0; i < Nmax; i++) {
			tBody.insertRow(i);
			fieldsOrder.forEach( function(item, n) {
				tBody.rows[i].insertCell(n).textContent =  formatObj[item] ?
                                                formatObj[item](copyOfOL[i][item]) : copyOfOL[i][item]; 
			});
		}
	}
	
	
	function fillTable4() {		
		var postCust = {},				//	постоянные покупатели (сохраняю их на всякий случай)
			tBody = tables[3].getElementsByTagName("tbody")[0],
			len, temp, count, i, j;
			
		copyOfOL.sort(compareByUser); 	
		function compareByUser(order1, order2) { 
			if 	 ( order1.user_id <= order2.user_id )	return -1
			else 									return 1;
		}
		
		temp = copyOfOL[0].user_id;
		count = 1;
		j = 0;		//	индекс вставляемой строки
		for(i = 1, len = copyOfOL.length; i < len; i++) {
			if (copyOfOL[i].user_id == temp)	{
				count++
			} else {
				if (count > 10) {
					postCust[temp] = count;
					tBody.insertRow(j);
					tBody.rows[j].insertCell(0).textContent = temp;
					tBody.rows[j].insertCell(1).textContent = count;
					j++;
				} 
				temp = copyOfOL[i].user_id;
				count = 1;
			} 
		}
	}
	
	
	function fillTable5() {
		document.querySelectorAll("button")[0].onclick = function() {
			var userID = document.getElementsByTagName('input')[1].value,
				j = 0,
				fieldsOrder = [ 'timestamp', 'id', 'total', 'typical', 'recommended' ],				
				tBody = tables[4].getElementsByTagName("tbody")[0];
				
			if (userID) {
				ordersList.forEach( function(item, n) {
					if (item.user_id == userID) {
						tBody.insertRow(j);
						fieldsOrder.forEach( function(a, m) {
							tBody.rows[j].insertCell(m).textContent = formatObj[a] ? formatObj[a](item[a]) : item[a];
						});
						j++;
					}
				});
			}
		}
	}
	
}	//	window.onload

Последний раз редактировалось Keramet, 12.01.2016 в 23:45.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Слайдер - карусель блоков (помогите пожалуйста) Viktor.Poberezhniy Общие вопросы Javascript 3 22.07.2014 12:46
Помогите пожалуйста вычислить общую сумму katalizator Общие вопросы Javascript 15 22.03.2013 16:26
Помогите пожалуйста разобраться со скриптом Shalty Opera, Safari и др. 1 21.01.2013 16:41
Помогите пожалуйста правильно написать скрипт raffx Events/DOM/Window 17 16.10.2012 20:31
Помогите пожалуйста с циклом faforty Общие вопросы Javascript 2 26.06.2011 21:38