Сообщение отредактировал wondertalik: 09 Январь 2016 - 00:32
Сообщений в теме: 10
#1
Отправлено 09 Январь 2016 - 00:27
В целом топик больше для разработчиков. Довольно часто в проектах приходится строить отчеты под ключ. Достойной библиотекой является w2ui. Документация достаточно хороша. Скрин1 , Скрин2 того, что можно получить с использованием этой либы. Весь интерфейс на js/html, подгрузка данных ajax.
#2
Отправлено 10 Январь 2016 - 21:56
Что-то попытка залить пример разметки во внешний файл clientbase к удаче не привел, в отличие, например от jQuery mobile на котором можно при помощи clientbase делать весьма симпатичные сервисы для мобильных телефонов при помощи ajax.
#3
Отправлено 11 Январь 2016 - 01:24
Александр Пономарев (10 Январь 2016 - 21:56) писал:
Что-то попытка залить пример разметки во внешний файл clientbase к удаче не привел, в отличие, например от jQuery mobile на котором можно при помощи clientbase делать весьма симпатичные сервисы для мобильных телефонов при помощи ajax.
#4
Отправлено 11 Январь 2016 - 11:25
Интересно, надо поизучать на досуге. А нет какой-нибудь русскоязычной статьи для первичного обзора?
#5
Отправлено 11 Январь 2016 - 11:39
CbCoder (11 Январь 2016 - 11:25) писал:
Интересно, надо поизучать на досуге. А нет какой-нибудь русскоязычной статьи для первичного обзора?
#6
Отправлено 11 Январь 2016 - 12:27
Да по документации то более-менее понятно. Мне скорее интересно обзорное описание, например чем от того же бутстрапа отличается. Документация - она уже для тех, кто знает для чего ему это все нужно.
#7
Отправлено 11 Январь 2016 - 12:41
CbCoder (11 Январь 2016 - 12:27) писал:
Да по документации то более-менее понятно. Мне скорее интересно обзорное описание, например чем от того же бутстрапа отличается. Документация - она уже для тех, кто знает для чего ему это все нужно.
#8
Отправлено 11 Январь 2016 - 19:37
Нельзя ли поподробнее расписать процесс подключения из-под clientbase.ru? Мне как раз нужно многооконный интерфейс сделать на вашем движке.
#9
Отправлено 12 Январь 2016 - 12:41
Вот вам пример доп. действия
Код доп. действия
utils.js
forms.js
структура файлов скрин
Код доп. действия
$pattern = <<<ST <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <HTML> <HEAD> <meta http-equiv="Content-Language" content="ru"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="robots" content="noindex,nofollow"> <title>Рога и Копыта - Клиентская база</title> <link rel="stylesheet" href="modules/lm/w2ui-1.4.3/w2ui-1.4.3.css" type="text/css"> <link rel="stylesheet" href="modules/lm/w2ui-1.4.3/font-awesome/font-awesome.css" type="text/css"> <script type="text/javascript" src="include/jquery/jquery.min.js"></script> <script src="modules/lm/w2ui-1.4.3/w2ui-1.4.3.js"></script> <script src="modules/lm/core/addclient/forms.js"></script> <script src="modules/lm/core/utils.js"></script> ST; $pattern .= "<script>var user_id = ".$user['id']."; var csrf = '".$csrf."'; var client_id = ".$line['id']."</script>"; $pattern .= <<<ST_2 <HEAD> <BODY> <div id="layout" style="width: 100%; height: 700px;"></div> </BODY> </HTML> ST_2; echo $pattern;
utils.js
/***
* Блокировка экрана
* @param message текст сообщения
* @constructor
*/
function lockDisplay(message) {
if(message == undefined)
message = 'Загрузка';
w2popup.open({
modal: true,
showClose: false,
showMax: false,
height: '300px',
width: '400px'
});
w2popup.lock(message, true);
}
/**
* Разблокировка экрана
* @constructor
*/
function unlockDisplay() {
w2popup.unlock();
w2popup.close();
}
forms.js
var pstyle = 'background-color: #F5F6F7; border: 1px solid #dfdfdf; padding: 5px;';
w2utils.locale('modules/lm/w2ui-1.4.3/locale/ru-ru.json');
var config = {
places: [],
forms: {
id: "forms_write",
ui: {
name: 'forms_write',
header: 'Фильтр',
fields: [
{
name: 'brand', type: 'list', required: true,
html: {
caption: 'Бренд', span: 6
},
options: {
items: [
{id: '1', text: 'Jean d’Estrees'},
{id: '2', text: 'Maria Galland'},
{id: '3', text: 'Perle de Mer'}
]
}
},
{
name: 'place_event', type: 'list',
html: {
caption: 'Место проведения', span: 6
},
options: {
items: [
{id: '1', text: 'Офис' },
{id: '2', text: 'Выезд'},
{id: '3', text: 'Командировка'}
],
selected: 1
}
},
{
name: 'contact', type: 'list',
html: {
caption: 'Контактное лицо', span: 6
},
options: {
items: [
]
}
}
],
onRender: function(event) {
getContactListForClient(client_id);
},
actions: {
Reset: function () {
this.clear();
w2ui[config.table.id].records = [];
w2ui[config.table.id].refresh();
},
Search: function () {
var validate_st = this.validate();
if(validate_st.length == 0) {
var brand_id = w2ui[config.forms.id].record.brand.id;
getCoursesList(brand_id, client_id);
}
}
}
}
},
layout: {
id: "main_layout",
ui: {
name: 'main_layout',
panels: [
{type: 'main', style: pstyle, content: '', size: '200'},
{type: 'preview', style: pstyle, content: '', size: '470'}
]
}
},
table: {
id: "list_events",
ui: {
name: 'list_events',
header: "График обучения",
show: {
header: true,
footer: true,
toolbar: true,
lineNumbers: true,
toolbarReload: false,
toolbarEdit: true
},
columns: [
{field: 'recid', caption: 'id', size: '40px'},
{field: 'place', caption: 'Место проведения', size: '120px'},
{field: 'startDate', caption: 'Начальная дата', size: '120px'},
{field: 'typeStudy', caption: 'Вид обучения', size: '100px'},
{field: 'subject', caption: 'Тема обучения', size: '320px'}
],
onEdit: function(event) {
w2confirm('Вы уверенны что хотите записать клиента на обучение?', function btn(answer) {
if(answer == 'Yes') {
//записываем клиента на обучение
// w2alert("На обучение успешно записан");
// console.log(event);
var course_id = event.recid;
var brand_id = w2ui[config.forms.id].record.brand.id;
var contact_id = w2ui[config.forms.id].record.contact.id;
addClientToCourse(course_id, brand_id, client_id, contact_id);
}
});
}
}
}
};
$(function () {
var btn = w2obj.grid.prototype.buttons;
btn.edit.caption = "Записать клиента на обучение";
$('#layout').w2layout(config.layout.ui);
w2ui[config.layout.id].content('main', $().w2form(config.forms.ui));
w2ui[config.layout.id].content('preview', $().w2grid(config.table.ui));
});
/***
* Получение списка контактов
* @param brand
* @param client_id
*/
function getCoursesList(brand, client_id) {
lockDisplay();
$.ajax({
type: 'POST',
url: 'modules/lm/core/addclient/api.php',
dataType: 'json',
data: {_type: "getCourses", brand: brand, client_id: client_id, _user_id: user_id, csrf: csrf},
success: function (response) {
//console.log(response);
if (response.status == 'done') {
//сохраняем список мест
config.places = response.data;
var place_sel = {id: '1', text: 'Офис', hidden: false};
if(w2ui[config.forms.id].record.place_event != "") {
place_sel = w2ui[config.forms.id].record.place_event;
} else {
w2ui[config.forms.id].record.place_event = place_sel;
}
var records = [];
for(var key in config.places) {
if(config.places[key].place == place_sel.text) {
records.push(config.places[key]);
}
}
//обновляем таблицу и форму
w2ui[config.table.id].records = records;
w2ui[config.table.id].refresh();
w2ui[config.forms.id].refresh();
unlockDisplay();
} else {
unlockDisplay();
w2alert("Не удалось загрузить контент. Пожалуйста, обновите страницу");
}
}
});
}
/**
* Получаем список контактных лиц
* @param client_id
*/
function getContactListForClient(client_id) {
lockDisplay();
$.ajax({
type: 'POST',
url: 'modules/lm/core/addclient/api.php',
dataType: 'json',
data: {_type: "getContactList", client_id: client_id, _user_id: user_id, csrf: csrf},
success: function (response) {
//console.log(response);
if (response.status == 'done') {
//формируем список контактов
var contacts = [];
for(var key in response.data) {
var one = {id: response.data[key].id, text: response.data[key].name, hidden: false};
if(response.data[key].main == 'Да') {
w2ui[config.forms.id].record.contact = one;
}
contacts.push(one);
}
w2ui[config.forms.id].set('contact', {options: {items: contacts}});
//обновляем форму
w2ui[config.forms.id].refresh();
$('button[name=Search]').addClass('btn-blue');
unlockDisplay();
} else {
unlockDisplay();
w2alert("Не удалось загрузить список контактных лиц. Пожалуйста, обновите страницу");
}
}
});
}
function addClientToCourse(course_id, brand_id, client_id, contact_id) {
// lockDisplay();
$.ajax({
type: 'POST',
url: 'modules/lm/core/addclient/api.php',
dataType: 'json',
data: {_type: "addClientToCourse", course_id: course_id,
brand_id: brand_id, client_id: client_id, contact_id: contact_id, _user_id: user_id, csrf: csrf},
success: function (response) {
//console.log(response);
if (response.status == 'done') {
// unlockDisplay();
w2alert(response.data);
} else {
// unlockDisplay();
w2alert("Не удалось загрузить список контактных лиц. Пожалуйста, обновите страницу");
}
}
});
}
структура файлов скрин
#10
Отправлено 10 Октябрь 2016 - 14:34
Я так понял, что этот вариант явно не для SAAS версии.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных













