Cкрипт Для Диаграмм

Тема в разделе "Мастерская", создана пользователем atoku, 13 окт 2006.

  1. TopicStarter Overlay

    atoku Модератор

    • Команда форума
    Рег.:
    05.02.2006
    Сообщения:
    2.949
    Симпатии:
    9
    Репутация:
    0
    Адрес:
    USA
    Оффлайн
    krey, я скопировал твои скрипты в http://kasparovchess.crestbook.com/krey/ - теперь расскажи как пользоваться.

    Ой! Хорошо бы. А то я что-то тут увлёкся диаграммками. Не у всех же выделенки да ADSL'ки. Да и траффик наверное поджимает... vasa
    krey

    пользоваться просто :) в данном случае, достаточно запустить fen2diag.html, вставить fen позиции в соответствующее поле и на диаграмме уже позиция!!! а вот как этим пользоваться... достаточно подключить к странице fen2diag.js, а потом вызывать функцию function fen2diag(fen) где параметром будет передаваться сама позиция. скрипт будет генерировать соответствующий html-код. в данном случае это происходит сл. образом: в случае изменений на странице вызывается функция update - которая подменяет тег p с соответствующим id (id="diagram") на такой же, но уже не пустой, а с диаграммой. думаю, можно даже немного упростить код... вот простой пример, который ничего не делает :)

  2. Antuan moderator

    • Команда форума
    Рег.:
    24.02.2006
    Сообщения:
    6.340
    Симпатии:
    2.570
    Репутация:
    283
    Адрес:
    Estonia
    Оффлайн
    krey, вынесите это Обсуждение в Отдельную Тему...
    Есть Мысли и Идеи, как Составлять Диаграммки из отдельных Фигурок.
    Уменьшим Трафик и MatPLUS (и Ваши разработки) нам помогут... ;)
  3. krey Михаил Кройтор

    • Команда форума
    Рег.:
    10.04.2006
    Сообщения:
    3.709
    Симпатии:
    50
    Репутация:
    1
    Адрес:
    Кишинев
    Оффлайн
    я бы вообще перенес всё о диаграммах в другую ветку :) только куда?
  4. Antuan moderator

    • Команда форума
    Рег.:
    24.02.2006
    Сообщения:
    6.340
    Симпатии:
    2.570
    Репутация:
    283
    Адрес:
    Estonia
    Оффлайн
    Диаграммы - это мастерская...
    Тем о диаграммах - несколько: ещё я заметил, что модератор на этом Форуме (конференции) имеет уникальную возможность - переносить не Всю Тему, а ОТДЕЛЬНЫЕ посты (сообщения) в другое место...
    01. Определим №№ сообщений для переноса,
    02. Укажем их адреса (УРЛы)
    03. Укажем Новое местонахождение
    04. Попросим Модератора (или Админа) это сделать: перенести... :)

    это понятно :) так что, для этого завести новую тему? krey
  5. Antuan moderator

    • Команда форума
    Рег.:
    24.02.2006
    Сообщения:
    6.340
    Симпатии:
    2.570
    Репутация:
    283
    Адрес:
    Estonia
    Оффлайн
    Это хорошее название - быстро запоминается :)

    По делу...

    Я так понял, что этот скрипт, видимо, больше подойдёт для статей, которые находятся в одной директории (папке)
    Хотя, можно скрипт *.js и в корень положить... И в header.php форума вставить Код ЯвыСкрипта...
    Возможно ли создать тэг который будет вводить Код ЯваСкрипта? :rolleyes:
  6. krey Михаил Кройтор

    • Команда форума
    Рег.:
    10.04.2006
    Сообщения:
    3.709
    Симпатии:
    50
    Репутация:
    1
    Адрес:
    Кишинев
    Оффлайн
    думаю, возможно. я, конечно, не большой спец в php, но, думаю, просмотрев, как устроены все теги, наваять по образу и подобию могу. в принципе, мог бы и так наваять, только тогда было бы непонятно, как это пристроить :)
    в идеале должно выглядеть так - вместо
    Код:
    [fen]2k1B3/ppB4b/3P3p/7P/3K4/2Pn4/1P6/8[/fen]
    подставляется
    Код:
    ...
    <SCRIPT language="javascript">
    function update()
    {
       var tmp = "2k1B3/ppB4b/3P3p/7P/3K4/2Pn4/1P6/8";
       document.all.КАКОЙ_ТО_ID.outerHTML = '<p id="КАКОЙ_ТО_ID">' + fen2diag(tmp) + "</p>";
    };
    </SCRIPT>
    ...
    <p id="КАКОЙ_ТО_IID"/>
    ...
    возможны усложнения :) то есть должен генерироваться и сохраняться уникальный ID для каждой диаграммы. правда, хотелось бы попроще что-то...
  7. Antuan moderator

    • Команда форума
    Рег.:
    24.02.2006
    Сообщения:
    6.340
    Симпатии:
    2.570
    Репутация:
    283
    Адрес:
    Estonia
    Оффлайн
    Должен с грустью заметить: жалко, что перенесённые темы ПРОПАЛИ в первоисточнике. Наверно, лучше - копировать и в первом Не удалять: возможно такое. Например, сейчас в Старотеме ссылка на №260 (для ВэбМастера), а самого Сообщения и нет... :(
    Видимо, необходимо дать ссылку на Новый Топик в старом...
  8. krey Михаил Кройтор

    • Команда форума
    Рег.:
    10.04.2006
    Сообщения:
    3.709
    Симпатии:
    50
    Репутация:
    1
    Адрес:
    Кишинев
    Оффлайн
    бред :) все проще - встречает тег - сразу же вставляет значение функции, и никаких идентификаторов :)
  9. krey Михаил Кройтор

    • Команда форума
    Рег.:
    10.04.2006
    Сообщения:
    3.709
    Симпатии:
    50
    Репутация:
    1
    Адрес:
    Кишинев
    Оффлайн
    я это сообщение хотел подредактировать - как раз удалить ссылку :)
  10. Antuan moderator

    • Команда форума
    Рег.:
    24.02.2006
    Сообщения:
    6.340
    Симпатии:
    2.570
    Репутация:
    283
    Адрес:
    Estonia
    Оффлайн
    это надо придумывать каждый раз самому?
    Можно потестировать на подобном форуме..
    но, действительно, сложновато...
    второй код необходимо прописать, видимо, в ядре движка, рядом с другими кодами - в include/parser.php
    можно попробовать...
    скрипт я утянуть смогу... :cool:
    только генератор fen2diag кажется недоконченным: была бы кнопочка - нажал и ЯваСкрипт-Код написАлся... :)
  11. krey Михаил Кройтор

    • Команда форума
    Рег.:
    10.04.2006
    Сообщения:
    3.709
    Симпатии:
    50
    Репутация:
    1
    Адрес:
    Кишинев
    Оффлайн
    доконченно там, просто вставил fen - и все дописалось :) можно и кнопку сделать. а вот иды думаю, не нужны. зачем ид, когда можно вставлять сразу хтмл-код.
  12. Antuan moderator

    • Команда форума
    Рег.:
    24.02.2006
    Сообщения:
    6.340
    Симпатии:
    2.570
    Репутация:
    283
    Адрес:
    Estonia
    Оффлайн
    У меня это ФЕН программа не понимает :(
    Точнее:

    Код:
    2k1B3/ppB4b/3P3p/7P/3K4/2Pn4/1P6/8 w - - 0 1
  13. krey Михаил Кройтор

    • Команда форума
    Рег.:
    10.04.2006
    Сообщения:
    3.709
    Симпатии:
    50
    Репутация:
    1
    Адрес:
    Кишинев
    Оффлайн
    это абсолютно неважно для скрипта. все равно он не говорит, чей ход, какой лучший и т.д. он просто ставит диаграмму с белыми фигурами внизу, при анализе строки хвост обрубается.
  14. Antuan moderator

    • Команда форума
    Рег.:
    24.02.2006
    Сообщения:
    6.340
    Симпатии:
    2.570
    Репутация:
    283
    Адрес:
    Estonia
    Оффлайн
    Будет ли изменён Код? Будет ли Убран ИД? Он Нужен?
    И как выглядит Строка для вставки <javascript>и Куда? между тэгами BODY?
  15. krey Михаил Кройтор

    • Команда форума
    Рег.:
    10.04.2006
    Сообщения:
    3.709
    Симпатии:
    50
    Репутация:
    1
    Адрес:
    Кишинев
    Оффлайн
    ИД к скрипту отношения не имеет, он нужен только для того, чтобы подставлять диаграммы в нужное место, которое помечено как раз идом. скрипт, если и будет изменен, то только для того, чтобы расширить возможности (например, показывать рядом с доской, чей ход). ОJavScript лучше засунуть в заголовок документа.
  16. krey Михаил Кройтор

    • Команда форума
    Рег.:
    10.04.2006
    Сообщения:
    3.709
    Симпатии:
    50
    Репутация:
    1
    Адрес:
    Кишинев
    Оффлайн
    можно скрипт переписать на php.

    тут посмотрел, для вставки диаграммы в нужном месте достаточно писать
    Код:
    <script>
    var tmp = fen2diag("2k1B3/ppB4b/3P3p/7P/3K4/2Pn4/1P6/8");
    document.write(tmp);
    </script>
  17. Antuan moderator

    • Команда форума
    Рег.:
    24.02.2006
    Сообщения:
    6.340
    Симпатии:
    2.570
    Репутация:
    283
    Адрес:
    Estonia
    Оффлайн
    Пока не получается... :(

    Этот код больше нравится... По-крайней мере похож на код MatPLUS, который доводилось устанавливать... ;)
    Но с Fen-кодом - удобнее... (МАТ генерирует какой-то свой код)
    Кстати...
    Если этюды будут сказочные, то можно и код МАТа взять... :)
  18. krey Михаил Кройтор

    • Команда форума
    Рег.:
    10.04.2006
    Сообщения:
    3.709
    Симпатии:
    50
    Репутация:
    1
    Адрес:
    Кишинев
    Оффлайн
    можно, конечно... у меня в тесте получилось, скоро попробую к парсеру прикрутить.
  19. Antuan moderator

    • Команда форума
    Рег.:
    24.02.2006
    Сообщения:
    6.340
    Симпатии:
    2.570
    Репутация:
    283
    Адрес:
    Estonia
    Оффлайн
    Наверно, в начале так надо:
    Код:
    <script type="text/javascript">
    Хотя, если получилось... :rolleyes:
    У меня синтаксическая ошибка вылетает...
    Возможно, установленный Хак, разрешающий вводить ХТМЛ в сообщениях для Админа - запрещает <javascript>
  20. krey Михаил Кройтор

    • Команда форума
    Рег.:
    10.04.2006
    Сообщения:
    3.709
    Симпатии:
    50
    Репутация:
    1
    Адрес:
    Кишинев
    Оффлайн
    очень может быть :)
    но правильней, все же, <script language="javascript">
  21. Antuan moderator

    • Команда форума
    Рег.:
    24.02.2006
    Сообщения:
    6.340
    Симпатии:
    2.570
    Репутация:
    283
    Адрес:
    Estonia
    Оффлайн
    Как успехи?

    на PunBB - тестируется? :)

    А у меня даже фигурки не показывает в Трансформаторе :(
  22. krey Михаил Кройтор

    • Команда форума
    Рег.:
    10.04.2006
    Сообщения:
    3.709
    Симпатии:
    50
    Репутация:
    1
    Адрес:
    Кишинев
    Оффлайн
    у меня на работе почему-то mySQL не работает, поэтому все проверять буду дома :) вечером.
  23. Antuan moderator

    • Команда форума
    Рег.:
    24.02.2006
    Сообщения:
    6.340
    Симпатии:
    2.570
    Репутация:
    283
    Адрес:
    Estonia
    Оффлайн
    В простом HTML-файле - работает.
    На форуме - Во Фрейме работает...
    Видимо, не туда вставляю
    Код:
    <SCRIPT language=javascript src="fen2diag.js"></SCRIPT>
    вставляю в header.php
    Может, надо где-то в Теме...
    Хотя... Есть мысль..
    Надо вставлять в Хеадер, но чтобы РНР - понимал... :)
  24. krey Михаил Кройтор

    • Команда форума
    Рег.:
    10.04.2006
    Сообщения:
    3.709
    Симпатии:
    50
    Репутация:
    1
    Адрес:
    Кишинев
    Оффлайн
    результат прикручиваний моего скрипта к punbb можно скачать здесь
    распаковать прямо туды-ть, куда punbb установлен. безопасность скрипта не гарантирую, более того, виден глюк. буду только рад, если его поможете разрешить :)
    добавление в parser.php я сопроводил комментарием (просто пометил). скрипт прикрутил прямо к заголовку header.php. жду сообщений.
  25. Antuan moderator

    • Команда форума
    Рег.:
    24.02.2006
    Сообщения:
    6.340
    Симпатии:
    2.570
    Репутация:
    283
    Адрес:
    Estonia
    Оффлайн
    Скачал - Установил :)
    Получилось... Сравнил файлы -
    01. *.js здесь (в папке krey) выложен неверный (другой)
    02. В header.php - по-другому вставлял - вот и не получилось..

    Глючёк - есть: размеры, какой-то Бордер (таблица)
    «Виноват» файл fen2diag.js
    Там Указан Бордер. Видимо, надо сделать Бордер=0
    А если Тэги таблицы совсем убрать?
  26. Antuan moderator

    • Команда форума
    Рег.:
    24.02.2006
    Сообщения:
    6.340
    Симпатии:
    2.570
    Репутация:
    283
    Адрес:
    Estonia
    Оффлайн
    Забыл написать, что в МОЁМ примере тэг называется [kren_s][/kren_s]
    Производная от fen и krey, _s - маленький (small)...
    Мы же планируем КРУПНЫЕ фигурки привинтить? ;)
  27. Antuan moderator

    • Команда форума
    Рег.:
    24.02.2006
    Сообщения:
    6.340
    Симпатии:
    2.570
    Репутация:
    283
    Адрес:
    Estonia
    Оффлайн
    Сначала думал, что виноваты стили, потом решил вообще от таблицы избавиться..
    Теперь файл fen2diag.js выглядит так:

    Код:
    function fen2diag(fen)
    {
            var     result  = '<div>';
            var     LEN     = fen.length;
            var     i,
                    c       = 0,
                    count   = 0;
            var     currChar;
            
            var     control = 0, aux = "";
    
            for(i = 0; i < LEN; i++)
            {
                    currChar = fen.charAt(i);
                    if(currChar == ' ')
                            break;
                    else aux += currChar;
            }
            fen = aux;
            LEN     = fen.length;
    
            for(i = 0; i < LEN; i++)
            {
                    currChar = fen.charAt(i);
                    if(currChar > '0' && currChar < '9')
                            control +=parseInt(currChar);
                    else
                    {
                            switch (currChar) {
                            case 'K': case 'Q': case 'R': case 'B': case 'N': case 'P':
                            case 'k': case 'q': case 'r': case 'b': case 'n': case 'p':
                                      control++;
                                      break;
                            case '/':continue;
                            default:
                                    control +=100;
                           }
                           
                    }
            }
            if(control != 64)
            {
                    fen = "8/8/8/8/8/8/8/8";
                    LEN     = fen.length;
            }
    
            for(i = 0; i < LEN; i++)
            {
                    currChar = fen.charAt(i);
                    if(currChar > '0' && currChar < '9')
                    {
                            for(t = 0; t < parseInt(currChar); t++)
                            {
                                    result += '<IMG SRC="img/';
                                    count++;
                                    if( (count%2) == 0 )
                                    {
                                            result += 1;
                                    }
                                    else
                                    {
                                            result += 0;
                                    }
                                    result +='.GIF">';
                            }
                    }
                    else if(currChar == '/')
                    {
                            count++;
                            result += "<br />";
                    }
                    else if(currChar == ' ')
                    {
                            break;
                    }
                    else
                    {
                            count++;
                            if( count%2 == 0 )
                            {
                                    c = 1;
                            }
                            else
                            {
                                    c = 0;
                            }
                            result += '<IMG SRC="img/';
                            switch (currChar) {
                            case 'K': case 'Q': case 'R': case 'B': case 'N': case 'P':
                                      result += currChar + c;
                                      break;
                            case 'k': case 'q': case 'r': case 'b': case 'n': case 'p':
                                      result += currChar.toUpperCase() + (c + 2);
                                      break;
                           }
                            result += '.GIF">';
                    }
    
            }
            result += "</div>\n";
     //       alert(result);
            return result;
    }
    Ни «Глюка», ни других композиторов не видно... :cool:
  28. krey Михаил Кройтор

    • Команда форума
    Рег.:
    10.04.2006
    Сообщения:
    3.709
    Симпатии:
    50
    Репутация:
    1
    Адрес:
    Кишинев
    Оффлайн
    другой, не значит неверный :) это я просто эксперементировал, пытался глюк исправить.
    можно убрать, но таблица здесь стоит, чтобы доска получалась с рамкой. поэтому бордер и поставлен на 1. а вот размеры - это с ними я и эксперементировал, мне не нравилось, что таблица разрывается (расширяется) на всю страницу. видимо, в стилях в punbb указаны свойства для таблицы по умолчанию. поэтому надо генерировать таблицу не по умолчанию, а с каким-либо несуществующим стилем.
  29. krey Михаил Кройтор

    • Команда форума
    Рег.:
    10.04.2006
    Сообщения:
    3.709
    Симпатии:
    50
    Репутация:
    1
    Адрес:
    Кишинев
    Оффлайн
    и рамки вокрут диаграммы нет :)
  30. Antuan moderator

    • Команда форума
    Рег.:
    24.02.2006
    Сообщения:
    6.340
    Симпатии:
    2.570
    Репутация:
    283
    Адрес:
    Estonia
    Оффлайн
    На тёмном (сером) фоне Форума диаграммка может быть и без Бордера (бордюра). Хотя с Бордером - красивее...
    С другой стороны, - хорошо бы и Буковки (и циферки) по краям доски иметь..

    По Тэгу таблицы, действительно, надо добавить СВОЙ, особый стиль (в той части, где описывается тэг TABLE), но где и как это сделать пока не сообразил..
    Я подумываю уже, а не использовать ли в файле *.js - тэги BBCode (квадратный table)
  31. krey Михаил Кройтор

    • Команда форума
    Рег.:
    10.04.2006
    Сообщения:
    3.709
    Симпатии:
    50
    Репутация:
    1
    Адрес:
    Кишинев
    Оффлайн
    не надо, поверь мне. вот, почти последний релиз :)
    вроде хорошо смотрится. можно сделать и для других размеров, но тут просто скрипт надо будет менять. это несложно.
  32. Antuan moderator

    • Команда форума
    Рег.:
    24.02.2006
    Сообщения:
    6.340
    Симпатии:
    2.570
    Репутация:
    283
    Адрес:
    Estonia
    Оффлайн
    Ну, наконец-то глючок исправил...
    Новый «Релиз» - лучше...
    Однако появилось какое-то пространство над диаграммой (да и над всем контентом сообщения)
    Поиграл с базовым стилем - теперь нормально:
    в файле base.css «Релиза» сделал изменения
    Код:
    /* 6.1 Table Basic Setup */
    
    
    .nope TABLE {WIDTH: 0pt; }             //added
    .pun TABLE {WIDTH: 100%}
  33. krey Михаил Кройтор

    • Команда форума
    Рег.:
    10.04.2006
    Сообщения:
    3.709
    Симпатии:
    50
    Репутация:
    1
    Адрес:
    Кишинев
    Оффлайн
    ждем, когда появится атоку.
  34. Antuan moderator

    • Команда форума
    Рег.:
    24.02.2006
    Сообщения:
    6.340
    Симпатии:
    2.570
    Репутация:
    283
    Адрес:
    Estonia
    Оффлайн
    Значит, недельки через 2 Хак ББКода будет прикручен... :)
    Что-то мне не очень нравиться Этот Выпуклый БОРДЕР. Как бы сделать ТОНКОЙ линией и со всех сторон одинаковый - пробовал Фоном, который чуть больше Доски сделать, но «Чёрный Квадрат» до появления Фигурок - не нравится...

    кстати, вэбмастера ждут ещё парочка фен-хаков: в одном, например, убираются %20, но это тема - другая уже, а пока...
    пишем в стол...
  35. TopicStarter Overlay

    atoku Модератор

    • Команда форума
    Рег.:
    05.02.2006
    Сообщения:
    2.949
    Симпатии:
    9
    Репутация:
    0
    Адрес:
    USA
    Оффлайн
    Ребят, нет пока времени даже разобраться в том, что написано. Но мне кажется решение есть: я думаю, не будет проблем дать Крею доступ к форумной части. Только с условием, все изменения в коде форума прежде обсуждать с моим участием, пожалуйста.

Поделиться этой страницей