Показать сообщение отдельно
  #1 (permalink)  
Старый 14.01.2012, 04:06
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Идея: Табличный процессор с JS
Активно пользуюсь Гуглодоксом, в том числе таблицами (их вариант Экселя). Возникла идея, за которую я вряд ли когда-то возьмусь из-за отсутствия времени. Поэтому предлагаю, кому хочется что-то сделать, но не знает что, реализовать следующую вещь.

Таблицы мне кажутся очень негибкими в плане формул. Сегодня пытался вывести день недели и получилось вот что:
Код:
=IF(WEEKDAY(A2;2)=1; "пн"; IF(WEEKDAY(A2;2)=2; "вт"; IF(WEEKDAY(A2;2)=3; "ср"; IF(WEEKDAY(A2;2)=4; "чт";
IF(WEEKDAY(A2;2)=5; "пт"; IF(WEEKDAY(A2;2)=6; "сб"; IF(WEEKDAY(A2;2)=7; "вс")))))))
В конце это не жабросмайлик (не смое страшное, что может быть), это конец формулы. Кроме этого, возникает еще ряд задач, совершенно неосуществимых (по крайней мере, в рамках моих знаний).
Предлагаю сделать свой табличный препроцессор, где формулы будут обычными JS выражениями, так как JS знают очень многие, а учить быдлоформулы не всем в кайф.

Каждая ячейка имеет свой адрес вида A[1] (может A1, то есть как обычная переменная?). Диапазоны можно задавать в таком виде: range(A[1], C[54]), то есть здесь каждый элемент массива имеет информацию о своём адресе, позволяя функции range создавать диапазон.

Встроенный функций тут может быть очень мало, весь остальной функционал может быть реализован встроенными средствами JS.

Вот пара гипотетических примеров, тупо вписываемых в нужную ячейку:
1. =range(A[1], C[54]).sum();
2. =function(){
       switch(todayWeekDay()) {// допустим weekday определена где-то в программе,
                               // в виде модуля к теблицам, чтоб не писать каждый раз new Date().getDay()
         case 1: return "Понедельник";
         ......
         case 7: return "Воскресенье";
   }
3. Какая-то сторонняя функция (модуль)
   table.range(A[1], C[54]).forEach(function( cell ){
         if( cell == 4 ) {
                   cell.node.style.color = 'red'; // node — ссылка на ячейку в таблице
         }
   });


В общем, я не знаю, предлагаю ли я что-то свежее и интересное, просто такой вещью сам бы пользовался, если бы она была где-то в облаке (например, использовала Google Fusion Tables, к которому я не ровно дышу).
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности

Последний раз редактировалось FINoM, 14.01.2012 в 04:22. Причина: i
Ответить с цитированием