powered by simpleCommunicator - 2.0.19     © 2024 Programmizd 02
Map
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Нужен совет по JS and M
25 сообщений из 85, страница 3 из 4
Нужен совет по JS and M
    #39920605
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu

[/src]
Неработающая:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
function DellTable1() {
    var myTable = document.getElementById("tabledispecer");
    var rowCount = myTable.rows.length;
    for (var i = 3; i < rowCount; i++) {
        myTable.deleteRow(i);
       }
    }


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

А в первом случае всегда удаляется четвертая.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39920889
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu , для скорейшего обновления данных таблицы их просто переписывают, а "лишние" строки удаляют... Если строк не хватает - их добавляют.

Про удаление...
Если правильно сделать таблицу... С тегами
Код: html
1.
2.
<thead></thead>
<tbody></tbody>


Можно просто заменять "полные" tbody на "пустые", а о "шапке" вообще не беспокоиться. ;)
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39920901
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,

getElementById и пр. очень плохо будут работаь. Сделай html и засунь всё в свойство innerHTML.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39920977
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
getElementById и пр. очень плохо будут работаь.

Почему?
Откуда такая информация?
crutchmaster
Сделай html и засунь всё в свойство innerHTML.

Это как раз не всегда уместное предложение...
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39921010
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa

crutchmaster
Сделай html и засунь всё в свойство innerHTML.

Это как раз не всегда уместное предложение...

https://fooobar.com/questions/95308/advantages-of-createelement-over-innerhtml
https://habr.com/ru/post/31413/
https://ru.stackoverflow.com/questions/635467/Почему-innerhtml-не-работает
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39921257
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему?
Они перестроение DOM будут делать после каждого вызова.
krvsa
Откуда такая информация?

Летали, знаем.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39921258
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это как раз не всегда уместное предложение...
Засунуть хтмл 1 раз всегда будет быстрее, чём дёргать пачку методов в цикле.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39921259
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,

https://habr.com/ru/post/31413/

Ничего, что этой статье уже 12 лет?
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39925009
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
krvsa,
https://habr.com/ru/post/31413/
Ничего, что этой статье уже 12 лет?

Так покажи статейку посвежее...
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39954511
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день !

В эту же тему. Надеюсь на вас получить ответ.
Получаю из М данные для отчета. Обрабатываю JS (jsPDF-AutoTable)
Изложу кусочек кода:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 didParseCell: function (data) {
  
// 1. НЕ РАБОТАЕТ - красит только одну ячейку   
      var string = data.cell.text;
        if (~string.indexOf("Y")) {
        alert(data.row.index); 
        if (data.row.index === data.row.index) {
       data.cell.styles.fillColor = [40, 170, 100]
       } 
    }

 // 2. РАБОТАЕТ - красит всю строку
    
    if (data.row.index === 3) {
        data.cell.styles.fillColor = [40, 170, 100]
     }
 }


Никак не могу понять в чем разница в этих двух условий ?
Я уже все перепробовал ...

Спасибо.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39954513
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,

Прошу прщения я ошибся немножко там я загоняю в переменную
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
// 1. НЕ РАБОТАЕТ - красит только одну ячейку   
      var string = data.cell.text;
        if (~string.indexOf("Y")) {
        alert(data.row.index); 
        var ind = data.row.index ;
        if (data.row.index === ind) {
       data.cell.styles.fillColor = [40, 170, 100]
       } 
    }
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39954519
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первоначально было так:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 didParseCell: function (data) {
     // 1. НЕ рабочий
       var string = data.cell.text;
        if (~string.indexOf("Y")) {
        data.cell.styles.fillColor = [40, 170, 100]
       } 
     
 // 2. РАБОЧИЙ   
    if (data.row.index === 3) {
        data.cell.styles.fillColor = [40, 170, 100]
     }
  }
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39954668
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu , просто потестируй свой код...

Либо пример тестовый делай и выкладывай тут. Куски рассматривать дело не особо перспективное...

Так же рекомендуют больше использовать классы, а не менять стиль напрямую у элемента.
Использование классов расширяет возможности как по использованию... Так и по отладке. ;)
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39954683
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,
Код:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
function PDFDispecer() {
var doc = new jsPDF('l', 'pt','a3');
//var PTSans=retUTF(); 
//doc.addFileToVFS("PTSans.ttf", PTSans);
//doc.addFont('PTSans.ttf', 'PTSans', 'bold');
//doc.setFont('PTSans'); 
var parc = document.getElementById('parc').value
var dataP = document.getElementById('day').value
var Parray = parc.split( "-" ); 
var Parc = Parray[1] 
var dispecer = document.getElementById('dispecer').value

if (base64Img) {
    doc.addImage(base64Img, 'JPEG', 30, 20, 60, 16); // primul - pozitia img , doi - latimea img ,trei - inaltimea img
}

doc.setFontSize(16);
doc.setFontStyle('bold');
if (Parc.indexOf('Parc') !== -1)  {
    doc.text(230, 45, 'Raport operativ privind ideplinirtea programului de activitate pe ' + Parray[1] + 'ul nr. ' + Parray[2] + ' la data de ' + dataP);
} else {
    doc.text(230, 45, 'Raport operativ privind ideplinirtea programului de activitate pe ' + Parray[1] +  ' la data de ' + dataP);
}

doc.setFontSize(14)
doc.setFontStyle('bold');
doc.setFontStyle('italic');

doc.text(1000, 35, 'Dispecer ' + dispecer);


doc.autoTable({html: '#tabledispecer',
    startY: 60, styles: {cellPadding: 3.0, 
    font:"Helvetica", 
    fontSize: 11, 
    fontStyle: "bold", 
    halign: "center", 
    },
    theme: 'grid', 

    columnStyles: {0: {columnWidth: 75}, 
        1:{columnWidth:40}, 
        2: {columnWidth: 35}, 
        3: {columnWidth: 35},
        4: {columnWidth: 35},
        5: {columnWidth: 35}, 
        6: {columnWidth: 35},
        7: {columnWidth: 35},
        8: {columnWidth: 35}, 
        9: {columnWidth: 35},
        10: {columnWidth: 35},
        11: {columnWidth: 35}, 
        12: {columnWidth: 35},
        13: {columnWidth: 35},
        14: {columnWidth: 35},
        15: {columnWidth: 35}, 
        16: {columnWidth: 35},
        17: {columnWidth: 35},
        18: {columnWidth: 35}, 
        19: {columnWidth: 35},
        20: {columnWidth: 35},  
        21: {columnWidth: 35},
        22: {columnWidth: 35}},

    didParseCell: function (data) {
        var rows = data.table.body;
        var string = data.cell.text;
     for (var j = 0; j <= 3; j++) {   
        if (data.row.index === j) {
            data.cell.styles.fillColor = 'f9f9f9'
         }
     }       
        
     if (~string.indexOf("PT1") || ~string.indexOf("PT2") || ~string.indexOf("PT3")) {
         var row = data.row.index;
 
     //  alert (row);
       if (data.row.index === row) { 
      data.cell.styles.fillColor = 'edf71d' 
         } 

      }
    /*
      if (data.row.index === 13 || data.row.index === 23 || data.row.index === 37) {
        data.cell.styles.fillColor = 'edf71d'
     }
   */
      if (data.row.index === rows.length - 1) {
        data.cell.styles.fillColor = '0edec2';
    }   
  },
});
doc.output("dataurlnewwindow");
}

...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39954763
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возьмите нормальный 'движек' для создания backend приложения и не тратьте время на все эти 'ухищрения'.
В таких "движках" и таблицы настраиваемые, и генераторы отчетов встроены. И самое главное, оно все работает без всякого "шаманства".
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39954810
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вижу решение - пока смутно...
1 .Посчитать это на стороне М, потом вызвать колбэком
массив и разобрать его в цикле .
2. Можно и прямо в JS ведь таблица у меня есть уже готовая !
Но не доходит как сохранить это в массив JS ( глобально)
а потом когда надо разобрать в цикле.ее

Т.е. , я в таблицы проверяю в каких строках содержится значение которое меня интересует
Значит я должен получать массив array = [13, 23, 37]

Я пробовал в лобешник ставить значения и это работает !!!
этот код:
Код: javascript
1.
2.
3.
     if (data.row.index === 13 || data.row.index === 23 || data.row.index === 37) {
        data.cell.styles.fillColor = 'edf71d'
     }
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39954870
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu
Я пробовал в лобешник ставить значения и это работает !!!
этот код:
Код: javascript
1.
2.
3.
     if (data.row.index === 13 || data.row.index === 23 || data.row.index === 37) {
        data.cell.styles.fillColor = 'edf71d'
     }


Значит в не работающем варианте ты не правильно делаешь условия...
Тестируй код. Смотри какие значения обрабатываешь и какое в итоге условие передается ИФу.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39954898
2acid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valeriu,

ValeriudidParseCell: function (data) {
// 1. НЕ рабочий
var string = data.cell.text;
if (~string.indexOf("Y")) {
data.cell.styles.fillColor = [40, 170, 100]
}

Предположу, что ~string.indexOf("Y") если в ячейке есть Y, то условие выполнится и для cell будет применен стиль
Valeriu
// 2. РАБОЧИЙ
if (data.row.index === 3) {
data.cell.styles.fillColor = [40, 170, 100]
}
}

А тут для всех ячеек строки index === 3 применится стиль
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39954911
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2acid,
Да. Правильно.
если "Y", красится ТОЛЬКО ОДНА ячейка .
Мне нужно если "Y" красить всю строку ...
Я получаю этот номер строки, но он все ровно красит ячейку.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39954932
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все таки пришлось перебирать еще раз таблицу,
найти номер строки по условию и красит соответственно ...
Уйму времени потратил. JS трудно дается мне.
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
   var tab = document.getElementById("tablesta");
     var l = tab.rows.length;
     for ( var i = 2; i < l; i++ ) {
         var tr = tab.rows[i];
         var cll = tr.cells[1];                                                              
         if(cll.innerText.indexOf('Y') != -1) {
            if (data.row.index === i) {
            data.cell.styles.fillColor = 'edf71d' 
            }
        }   
     }
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39967713
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

В эту же тему.
Можно как-то запускать рутину по расписанию
один раз в сутки ?
В рутину будет входить и некоторый код JS

Спасибо.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39967716
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,

nodejs + cron.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39967723
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,
У меня есть возможность запустить просто М рутину типа
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
s %fcgi("o","stdout")="" 
 s %fcgi("o","header","Content-Type")="text/html"
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01//EN"" ""http://www.w3.org/TR/html4/strict.dtd"">"_$C(13,10)
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"<html><head>"_$C(13,10)
 s %fcgi("o","stdout")=%fcgi("o","stdout")_""_$C(13,10)
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"<meta http-equiv=""Content-Type"" content=""text/html; charset=windows-1251"">"_$C(13,10)
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"<title>GDE and MUPIP</title>"_$C(13,10)
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"<link href=""/tabs_js/tabtastic.css"" rel=""stylesheet"" type=""text/css"">"_$C(13,10) 
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"<script type=""text/javascript"" src=""/tabs_js/addclasskillclass.js""></script>"_$C(13,10)
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"<script type=""text/javascript"" src=""/tabs_js/attachevent.js""></script>"_$C(13,10)
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"<script type=""text/javascript"" src=""/tabs_js/addcss.js""></script>"_$C(13,10)
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"<script type=""text/javascript"" src=""/tabs_js/tabtastic.js""></script>"_$C(13,10)
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"<script type=""text/javascript"" src=""/tabs_js/mupip.js""></script>"_$C(13,10)
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"<script type=""text/javascript"" src=""mumpsedit/ajax.js""></script>"_$C(13,10)
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"<script src=""mumpsedit/iniUI.js""></script>"_$C(13,10)
 s %fcgi("o","stdout")=%fcgi("o","stdout")_""_$C(13,10)
  ......


Или есть вариант и отдельно HTML JS файлы
Мое приложение посылает с М сервера, другому серверу данные в json формате.
Я просто вручную это делаю нажимая на какой-то батон ...
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39967777
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu
Можно как-то запускать рутину по расписанию
Портал - Управление системой - Менеджер задач - Планируете задачу типа "Legacy Task", в строчку кода, запуск вашей программы.

Если у вас Cache 5.0.x, то Портала нет, но, возможно, есть (в области "%SYS") CHUI-утилита ^TASKMGR примерно с теми же возможностями.

Если и её нет, то есть класс %SYS.Task или %SYSTEM.Task, который позволяет планировать задачи программно.

Особых преимуществ внутренний планировщик над внешним (типа cron) не имеет, разве что некоторая дополнительная гибкость:
  • возможность описания задач как классов со свойствами, которые можно редактировать в Портале (в Cache 5.0 этого ещё не было)
  • возможность запуска одной задачи по завершении другой
  • увязка расписания с перезапуском Cache
  • и кое-что ещё.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39968128
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,

Да. Кроме node js пока не вижу как это реализовать..
Все хорошо, но вот еще один подводный камень - Ajax в Node JS
никак не могу сдружить ..
...
Рейтинг: 0 / 0
25 сообщений из 85, страница 3 из 4
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Нужен совет по JS and M
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]