ТЗ кабинет управления видеодомофонами (адресная база + клиенты)
РЕЗУЛЬТАТ :
1) #фреймворк для быстрого построения кабинетов систем управления.
2) Кабинет обращается к серверу только в случаях передачи измененных или новых данных а также получения новых данных от сервера. То есть сервер практически не грузится работой админа и клиентов.
3) Быстрая отработка сложных многострочных таблиц учетных данных без нагрузки на процессы рендеринга таблицы (без flow rendering)
4) Lighthouse Perfomance = 100%, кабинет запускается не более 250 ms.
5) Независимо от количества строк в таблицах среднее время визуализации блока из 10 колонок x 18 строк (180 DOM элементов) =~ 3.1ms или =~320 FPS (показатели на устройстве CPU 2core 3.6 GHz, GPU 2048MB DDR3 700MHz при том что данные в каждый блок подтягиваются на лету), нет ни какой предсобранной таблицы, так что это экономит память браузера и предотвращает отказ при переполнении памяти GS. Время визуализации (180 DOM элементов) при прокрутке колесом или в режиме animate scroll ~3.7ms. Разные режимы прокрутки начиная с 1 строки.
6) Custom scroll (тесть встроенный scroll не используется), абсолютно без подтормаживания при прокрутке таблицы в 80 000 строк.
7) Custom listbox - не имеет ограничений полей для select.
8) и мн. др.
9) маркеры для записей + авто возврат админа на прежний row и много др.
к примеру как дать инструкции для работы PHP и JS с таблицами (как показывать и сохранять новые единичные записи или загруженные текстом)
$TCFname = $crossedBases[4];
$TCFtable = $crossedBases[$TCFname][0];
$TCF =
[
'jsArrayName' => $TCFname,
'SQL' =>
[
'sqlBase' => ''
,'sqlTables' => [$TCFtable]
,'sqlGetFrom' => $TCFtable
,'sqlReqCache' => 'yes'
,'sqlGetRequires' => ['','','','','','',1,1,'','']
,'sqlGetCols' => [
$TCFtable.'.id',
$TCFtable.'.id_region',
$TCFtable.'.id_city',
$TCFtable.'.id_street',
$TCFtable.'.id_building',
$TCFtable.'.door',
$TCFtable.'.aps_from',
$TCFtable.'.aps_to',
$TCFtable.'.id_equip',
$TCFtable.'.created'
]
],
'Table' =>
[
'objectIndex' => '0'
,'sort_order_on_start' => 'asc'
,'sort_column_on_start' => '3'
,'saveType' => 'async'
,'saveIn' => 'DB'
,'orderInFilter' => $crossedBases[$TCFname][1]
],
'Table_arrays' =>
[
'deletable' => false
,'addressNavigator' => true
,'editable' => ['','','','','',5,6,'','']
,'markerCol' => ['markMarkRow',' markUsersBuilding','markLinkBuilding','markLinkBuildingEQ']
,'top' => ['100%','0','center','0','0','']
,'col_width' =>
[
$adress_region_width,
$adress_city_width,
$adress_street_width,
'width:auto',
'width:auto',
'width:auto',
'width:auto',
'width:auto',
$created_width,
$button_width,
],
],
'colsProps' =>
[
['sort','left','switchIndexToName|1','','']
,['sort','left','switchIndexToName|1','','']
,['sort','left','switchIndexToName|2','','']
,['sort','left','switchIndexToName|3','','Draw_List|3']
,['','left','','','']
,['','left','','','']
,['','left','','','']
,['','left','','','']
,['sort','center','','','']
,['func','center','Button_string_edit','','']
],
];
все писать ничего не нужно... (ну если не возникают особые нюансы)
больше тут обо мне https://freelancehunt.com/freelancer/RIC_CON.html#portfolio