From 0b34a768d5cae5df7b6a9642cd78b9a242cdc959 Mon Sep 17 00:00:00 2001 From: Ruslan Talipov Date: Sat, 3 Nov 2012 14:05:00 +0600 Subject: [PATCH 1/3] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D0=BE=D1=82=D0=BE=D0=B2?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B8=D0=BD=D1=82=D0=B5=D1=80=D1=84=D0=B5=D0=B9?= =?UTF-8?q?=D1=81=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Можно создавать и выводить объекты. Сейчас будет приделывать старые/новые коды к этому интерфейсу. --- Cripi/calendar.html | 89 +++++++++++++++++++++++++++++++++++++++++++++ Cripi/main.css | 16 ++++++++ Cripi/move.js | 73 +++++++++++++++++++++++++++++++++++++ 3 files changed, 178 insertions(+) create mode 100644 Cripi/calendar.html create mode 100644 Cripi/main.css create mode 100644 Cripi/move.js diff --git a/Cripi/calendar.html b/Cripi/calendar.html new file mode 100644 index 0000000..97f4f45 --- /dev/null +++ b/Cripi/calendar.html @@ -0,0 +1,89 @@ + + + + + +События + + + +

Добро пожаловать в конструктор событий, Username!

+ +
+
+

Создайте своё собственное событие

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Название события
Дата начала
Дата окончания
Описание события
Предшествующие связанные события + +
Участники события
Место проведенияТут будет что-то что позволяет сохранить точку на яндекс картах
ПриватностьОбщедоступноеПриватное +
Возрастной рейтинг + 0+ + 3+ + 6+ + 12+ + 16+ + 18+ +
Внешняя ссылка
+ +

Добавить событие

+
+
+ + + +
+
+

Созданные события

+
+
+ + +
+ + + diff --git a/Cripi/main.css b/Cripi/main.css new file mode 100644 index 0000000..e81613e --- /dev/null +++ b/Cripi/main.css @@ -0,0 +1,16 @@ +@charset "utf-8"; +/* CSS Document */ + +#username {border-bottom:dotted thin;} +#createButton{padding: 10px 20px; + background:#0CF; + color:#FFF;} +#tableOfEvents tr td.nodata {border:#FFF thin solid; + background:#FDD; + padding:5px; + width:60px;} +#tableOfEvents tr td{border:#FFF thin solid; + background:#EEE; + padding:5px; + min-width:100px;} + diff --git a/Cripi/move.js b/Cripi/move.js new file mode 100644 index 0000000..4414785 --- /dev/null +++ b/Cripi/move.js @@ -0,0 +1,73 @@ +// JavaScript Document +var index=0; +var eventFields = {'user':'Пользователь', +'call':'Название события', +'dateStart':'Дата начала', +'dateFinish':'Дата окончания', +'location':'Место проведения', +'parent':'Предшествующие связанные события', +'people':'Участники', +'url':'Ссылка на событие в сети', +'private':'Приватность события', +'EvRS':'Возрастные ограничения'}; +var Collection = []; +var userinput = document.getElementById("userinput"); +userinput.style.display="none"; +userinput.addEventListener('blur', function(event){ + userinput.style.display ="none"; + userspan.innerHTML=userinput.value; + if (userspan.innerHTML==""){ + userspan.innerHTML="Username"; + } + userspan.style.display=""; +},true); + +var userspan= document.getElementById('username'); +userspan.addEventListener('click', function(event){ + userspan.style.display="none"; + userinput.style.display=""; + userinput.focus(); + //Удаляем текст вставляем input id="userinput" + //Добавляем +},true); + +function tableConstructor(obj,row){ + tr = document.createElement('tr') + for (var i in eventFields){ + td = document.createElement(row); + if (typeof obj[i] === "undefined" || obj[i]==''){ + td.innerHTML = ''; + td.setAttribute('class','nodata'); + } + else { + td.innerHTML = obj[i]; + td.setAttribute('class',i); + }; + tr.appendChild(td) + } + return tr +} +addButton = document.getElementById('createButton'); +addButton.addEventListener('click', function(event){ + tab = document.getElementById('tableOfEvents'); + if (Collection.length==0){ + tab.appendChild(tableConstructor(eventFields,'th')); + } + var user = userspan.innerHTML; + var call = document.getElementById('call').value ; + var dateStart = document.getElementById('dateStart').value; + var dateFinish = document.getElementById('dateFinish').value; + var parent = document.getElementById('parents').value; + if (parent == ''){ + parent = []}; + var people = document.getElementById('people').value; + var url = document.getElementById('url').value; + //////////////Создаём событие конструктором или чем-то похожим + Item = {'user':user, 'call':call, 'dateStart':dateStart, 'dateFinish':dateFinish, 'parent':parent, 'people':people, 'url':url}; + Collection[index]= Item; + index+=1; + ////////////////////////////////////////////////////////////// + + tab.appendChild(tableConstructor(Item,'td')); + console.log(Collection) +}, true); \ No newline at end of file From 6a8cd45415f78fd2dca35cae0c69933a86480104 Mon Sep 17 00:00:00 2001 From: Ruslan Talipov Date: Sat, 3 Nov 2012 14:53:37 +0600 Subject: [PATCH 2/3] =?UTF-8?q?=D0=92=D1=81=D0=B5=20=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D1=8F=20=D1=87=D0=B8=D1=82=D0=B0=D1=8E=D1=82=D1=81=D1=8F.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Надо бы ещё добавиться валидацию формы... --- Cripi/calendar.html | 19 ++++++++++--------- Cripi/main.css | 7 ++++--- Cripi/move.js | 24 ++++++++++++++++++++---- 3 files changed, 34 insertions(+), 16 deletions(-) diff --git a/Cripi/calendar.html b/Cripi/calendar.html index 97f4f45..7566565 100644 --- a/Cripi/calendar.html +++ b/Cripi/calendar.html @@ -13,7 +13,7 @@

Добро пожаловать в конструктор событий,

Создайте своё собственное событие

- + @@ -28,12 +28,13 @@

Создайте своё собственное событие

- + @@ -47,17 +48,17 @@

Создайте своё собственное событие

- diff --git a/Cripi/main.css b/Cripi/main.css index e81613e..7254c47 100644 --- a/Cripi/main.css +++ b/Cripi/main.css @@ -8,9 +8,10 @@ #tableOfEvents tr td.nodata {border:#FFF thin solid; background:#FDD; padding:5px; - width:60px;} + } #tableOfEvents tr td{border:#FFF thin solid; - background:#EEE; + background:#DFFFED; padding:5px; - min-width:100px;} + min-width:100px; + max-width:250px;} diff --git a/Cripi/move.js b/Cripi/move.js index 4414785..a6f72ed 100644 --- a/Cripi/move.js +++ b/Cripi/move.js @@ -4,8 +4,9 @@ var eventFields = {'user':'Пользователь', 'call':'Название события', 'dateStart':'Дата начала', 'dateFinish':'Дата окончания', +'description':'Описание', 'location':'Место проведения', -'parent':'Предшествующие связанные события', +'parent':'Предшествующие события', 'people':'Участники', 'url':'Ссылка на событие в сети', 'private':'Приватность события', @@ -57,14 +58,29 @@ addButton.addEventListener('click', function(event){ var call = document.getElementById('call').value ; var dateStart = document.getElementById('dateStart').value; var dateFinish = document.getElementById('dateFinish').value; - var parent = document.getElementById('parents').value; - if (parent == ''){ + var parentSelect = document.getElementById('parents'); + var parent = parentSelect.value; + if (parent == 'Выберите событие'){ parent = []}; + var description = document.getElementById('description').value var people = document.getElementById('people').value; var url = document.getElementById('url').value; + function getRadioGroupValue(radioGroupObj) + { + for (var i=0; i < radioGroupObj.length; i++) + if (radioGroupObj[i].checked) return radioGroupObj[i].value; + return null; + } + var EvRS = getRadioGroupValue(document.constructor.EvRS); + var private = getRadioGroupValue(document.constructor.private); + //////////////Создаём событие конструктором или чем-то похожим - Item = {'user':user, 'call':call, 'dateStart':dateStart, 'dateFinish':dateFinish, 'parent':parent, 'people':people, 'url':url}; + Item = {'user':user, 'call':call, 'dateStart':dateStart, 'dateFinish':dateFinish, 'parent':parent,'description':description, 'people':people, 'url':url, 'EvRS':EvRS, 'private':private}; Collection[index]= Item; + option = document.createElement('option'); + option.innerHTML=Item['call']; + option.setAttribute('value',Item['call']); + parentSelect.appendChild(option); index+=1; ////////////////////////////////////////////////////////////// From f55503c6df688fde9d81a96d0e2fa6c36cd03210 Mon Sep 17 00:00:00 2001 From: Ruslan Talipov Date: Tue, 13 Nov 2012 12:29:23 +0600 Subject: [PATCH 3/3] =?UTF-8?q?=D0=92=D0=B4=D0=BE=D1=85=D0=BD=D1=83=D0=BB?= =?UTF-8?q?=20=D0=B6=D0=B8=D0=B7=D0=BD=D1=8C=20=D0=B2=20=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=86=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Связал с классами событий и колекций. Проблема с удалением элементов удаляется только половина потомков. --- Cripi/calendar.html | 18 +++--- Cripi/events.js | 148 ++++++++++++++++++++++++++++++++++++++++++++ Cripi/main.css | 10 ++- Cripi/move.js | 110 +++++++++++++++++++++++++------- 4 files changed, 255 insertions(+), 31 deletions(-) create mode 100644 Cripi/events.js diff --git a/Cripi/calendar.html b/Cripi/calendar.html index 7566565..7328183 100644 --- a/Cripi/calendar.html +++ b/Cripi/calendar.html @@ -3,6 +3,7 @@ + События @@ -12,23 +13,26 @@

Добро пожаловать в конструктор событий,

Создайте своё собственное событие

+
    +
  • Написать валидацию формы
  • +

Название события
Описание события
Предшествующие связанные события
ПриватностьОбщедоступноеПриватное + ОткрытоеПриватное
Возрастной рейтинг - 0+ - 3+ - 6+ - 12+ - 16+ - 18+ + 0+ + 3+ + 6+ + 12+ + 16+ + 18+
- + - + - + - + @@ -40,7 +44,7 @@

Создайте своё собственное событие

- + @@ -63,11 +67,10 @@

Создайте своё собственное событие

- + @@ -80,6 +83,7 @@

Создайте своё собственное событие


Созданные события

+

Двойной щелчок по заголовку - сортировка по выбранному столбцу.

Название события
Дата начала
Дата окончания
Описание события
Предшествующие связанные события
Участники события
Место проведения
Внешняя ссылка
-

Добавить событие

diff --git a/Cripi/events.js b/Cripi/events.js new file mode 100644 index 0000000..8e3e605 --- /dev/null +++ b/Cripi/events.js @@ -0,0 +1,148 @@ +// JavaScript Document +function inherits(Constructor, SuperConstructor){ +var F = function () {}; +F.prototype = SuperConstructor.prototype; +Constructor.prototype = new F() +}; +function isDate(date){ + if (date === ''){ + return true + } + else { + return false + } +} + +/*var Model = function (data) { + "use strict"; + var keyName; + for (keyName in data) { + if (data.hasOwnProperty(keyName)) { + this[keyName] = data[keyName]; + } + } +}; +/** + * Set - устанавливает аттрибуты и значения атрибутов, в соответсвии с принятым в качестве параметра объектом + * + * @param {Object} attributes + * + * @example + * item.set({title: "March 20", content: "In his eyes she eclipses..."}); + */ +/*Model.prototype.set = function (attributes) { + for (var key in attributes){ + if (attributes.hasOwnProperty(key)) { + this[key] = attributes[key]; + } + } +}; + +/** + * Get возвращает запрашиваемое свойство у объекта + * + * @param {Object} attributes + */ +/*Model.prototype.get = function (attribute) { + if (this.hasOwnProperty(attribute)) { + return this[attribute]; + } + return undefined; +}; +/** + * + * @param {Object} attributes + */ +/*Model.prototype.validate = function (attributes) { + throw new Error('this is Abstract method'); +}; + +*/ +var Event = function(data){ + var keyName; + for (keyName in data) { + if (data.hasOwnProperty(keyName)) { + this[keyName] = data[keyName]; + } + } +}; +Event.prototype.r = function(){ + console.log('tratatatata') +} +Event.prototype.validate = function() { + //'use strict'; + var errorList = [];/* + if (this.name === undefined){ + this.name = 'Новое событие' + } + if (!isDate(this.start)){ + errorList.push('Неверно указана дата начала события.') + } + if (!isDate(this.end)){ + errorList.push('Неверно указана дата окончания события.') + } + /*if (this.start < this.end){ + errorList.push('Время начала события должно быть раньше времени окончания.') + } + */ + /** + return { + "start": DateStart || new Date(), + "end": DateFinish, + "name": Call || "Новое событие", + "description": Description || "Описание события", + "parent": Parent || {}, + "childs": Childs || [], + "comments": Comments || [], + "peoples": Peoples || [], + "location": Location || {}, + "private": Private || False, + "rank": Rank || 0, + "EvRS": EvRS || 18, + "Link": Link || '' + } + */ + return errorList + +}; + + + +var Collection = function(data){ + this.items = []; + var i + for (var i in data){ + this.items.push(data[i]); + } +}; +Collection.prototype.add = function(i){ + this.items.push(i); +} +//Collection.prototype = new Model(); + +var Events = function(){}; +Events.prototype = new Collection() + +Events.prototype.sortByStartTime = function(){} +Events.prototype.sortByEndTime = function(){} +Events.prototype.previos = function(){} +Events.prototype.futures = function(){} +Events.prototype.filterByField = function(){} +Events.prototype.myEvents = function(){} +Events.prototype.eventsWhithMe = function(){} + +///////////////////////////////////////////////////////////////////////// +e = new Event({"start": new Date(2012, 9, 3, 19, 00, 00), + "end": new Date(2012, 9, 3, 20, 00, 00), + "name": "1 лекция по JavaScript", + "description": "Обзор языка", + "parent": {}, + "childs": [], + "comments": ['Красивенько', 'А мы могли бы...'], + "people": [], + "location": {}, + "private": true, + "rank": 4, + "EvRS": 16, + "Link": 'http://cripi.ru/#javascript'}); + diff --git a/Cripi/main.css b/Cripi/main.css index 7254c47..ae931b4 100644 --- a/Cripi/main.css +++ b/Cripi/main.css @@ -5,13 +5,19 @@ #createButton{padding: 10px 20px; background:#0CF; color:#FFF;} -#tableOfEvents tr td.nodata {border:#FFF thin solid; +/*#tableOfEvents {}*/ +#tableOfEvents tr td.nodata {border:#000 thin solid; background:#FDD; padding:5px; } -#tableOfEvents tr td{border:#FFF thin solid; +#tableOfEvents tr td{border:#000 thin solid; background:#DFFFED; padding:5px; min-width:100px; max-width:250px;} +#tableOfEvents tr th{border:#000 thin solid; + background:#CFC; + padding:5px; + min-width:100px; + max-width:250px;} diff --git a/Cripi/move.js b/Cripi/move.js index a6f72ed..0df14c2 100644 --- a/Cripi/move.js +++ b/Cripi/move.js @@ -11,34 +11,40 @@ var eventFields = {'user':'Пользователь', 'url':'Ссылка на событие в сети', 'private':'Приватность события', 'EvRS':'Возрастные ограничения'}; -var Collection = []; +var constructorFormFields = ['call', 'dateStart', 'dateFinish', 'description', 'people', 'url']; +var headSotrEventFlag = false; + +var ourEvents = new Events(); + +/////////////////////Поле username////////////////////////////////////// var userinput = document.getElementById("userinput"); +var userspan= document.getElementById('username'); userinput.style.display="none"; +userinput.value = userspan.innerHTML; userinput.addEventListener('blur', function(event){ userinput.style.display ="none"; userspan.innerHTML=userinput.value; - if (userspan.innerHTML==""){ - userspan.innerHTML="Username"; - } userspan.style.display=""; },true); - -var userspan= document.getElementById('username'); userspan.addEventListener('click', function(event){ userspan.style.display="none"; + userinput.value = userspan.innerHTML; userinput.style.display=""; userinput.focus(); - //Удаляем текст вставляем input id="userinput" - //Добавляем },true); - +///////////////////////////////////////////////////////////////////////// function tableConstructor(obj,row){ + /* + Создаёт строки в таблице. + Параметры объект добавляемый в талицу + Тип ячейки заголовок/простая. + */ tr = document.createElement('tr') for (var i in eventFields){ td = document.createElement(row); if (typeof obj[i] === "undefined" || obj[i]==''){ td.innerHTML = ''; - td.setAttribute('class','nodata'); + td.setAttribute('class','nodata '+i); } else { td.innerHTML = obj[i]; @@ -48,23 +54,57 @@ function tableConstructor(obj,row){ } return tr } +function addData(fieldId){ + var formfield=document.getElementById(fieldId); + var result = formfield.value; + formfield.value = ''; + return result; +} +var tab = document.getElementById('tableOfEvents'); + +/////////////////Описание обработчика добавления события//////////////// addButton = document.getElementById('createButton'); addButton.addEventListener('click', function(event){ - tab = document.getElementById('tableOfEvents'); - if (Collection.length==0){ + if (ourEvents.items.length==0){ tab.appendChild(tableConstructor(eventFields,'th')); + thList = document.getElementsByTagName('th'); + for (var i=0; ib[sortedField]){ + return -1}; + if (a[sortedField] 0){ + errorBlock = document.getElementById('errors') + for (var error in errors){ + var li = document.createElement('li'); + li.innerHTML = errors[error]; + errorBlock.appendChild(li) + } + } + else { + for (var field in constructorFormFields){ + document.getElementById(constructorFormFields[field]).value = ""; + }; + ourEvents.add(Item); + }; + + + var option = document.createElement('option'); option.innerHTML=Item['call']; option.setAttribute('value',Item['call']); parentSelect.appendChild(option); @@ -85,5 +144,12 @@ addButton.addEventListener('click', function(event){ ////////////////////////////////////////////////////////////// tab.appendChild(tableConstructor(Item,'td')); - console.log(Collection) -}, true); \ No newline at end of file + +}, true); +/////////Окончание обработчика добавления события///////////////// + +/*keyDown +keyUp +KeyPressed*/ +/*event.keyCode +event.CharCode*/ \ No newline at end of file