Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
sd-doc
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Valentin Skripnikov
sd-doc
Commits
106ab9df
Commit
106ab9df
authored
Jan 24, 2018
by
Valentin Skripnikov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
-
parent
64005dad
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
676 additions
and
0 deletions
+676
-0
guide/_static/html/integration/extfp-usecases/uc7/index.css
guide/_static/html/integration/extfp-usecases/uc7/index.css
+85
-0
guide/_static/html/integration/extfp-usecases/uc7/index.html
guide/_static/html/integration/extfp-usecases/uc7/index.html
+77
-0
guide/_static/html/integration/extfp-usecases/uc7/index.js
guide/_static/html/integration/extfp-usecases/uc7/index.js
+146
-0
guide/_static/html/integration/extfp-usecases/uc7/uc7.css
guide/_static/html/integration/extfp-usecases/uc7/uc7.css
+113
-0
guide/_static/html/integration/extfp-usecases/uc7/uc7.js
guide/_static/html/integration/extfp-usecases/uc7/uc7.js
+233
-0
guide/integration.rst
guide/integration.rst
+1
-0
guide/integration/extfp-usecases/uc7.rst
guide/integration/extfp-usecases/uc7.rst
+21
-0
No files found.
guide/_static/html/integration/extfp-usecases/uc7/index.css
0 → 100644
View file @
106ab9df
body
,
div
,
span
,
input
,
button
{
font-family
:
"Droid Sans"
,
arial
,
serif
;
font-size
:
14px
;
box-sizing
:
border-box
;
-moz-box-sizing
:
border-box
;
-webkit-box-sizing
:
border-box
;
}
.hidden
{
display
:
none
;
}
.portal_button
{
background-color
:
#df6c6d
;
border-color
:
#df6c6d
;
color
:
#ffffff
;
padding-left
:
20px
;
padding-right
:
20px
;
height
:
30px
;
border
:
none
;
margin-left
:
10px
;
margin-right
:
10px
;
}
.portal-center
{
text-align
:
center
;
vertical-align
:
top
}
.portal-toolbar
{
padding
:
10px
;
color
:
#6e8ebd
}
#form_player_container
{
/*border: 3px solid #6e8ebd;*/
outline
:
1px
#ffffff
solid
;
margin-left
:
auto
;
margin-right
:
auto
;
width
:
1000px
;
min-height
:
400px
;
background-color
:
#ffffff
;
padding-top
:
20px
;
padding-bottom
:
60px
;
margin-bottom
:
20px
;
}
#form_player_div
{
width
:
1000px
;
min-height
:
200px
;
}
#search_input
{
background-color
:
#6e8ebd
;
border
:
1px
#6e8ebd
solid
;
height
:
30px
;
width
:
200px
;
padding-left
:
10px
}
#send_button
{
margin-left
:
auto
;
margin-right
:
auto
;
width
:
200px
;
margin-bottom
:
20px
;
}
#message
{
background-color
:
#ffffff
;
border
:
3px
solid
#df6c6d
;
outline
:
1px
#932121
solid
;
z-index
:
2
;
position
:
absolute
;
top
:
100px
;
left
:
30%
;
color
:
#303030
;
padding
:
10px
;
max-width
:
40%
;
min-width
:
40%
;
}
#message_text
{
color
:
#303030
;
}
guide/_static/html/integration/extfp-usecases/uc7/index.html
0 → 100644
View file @
106ab9df
<!doctype html>
<html>
<head>
<meta
charset=
"utf-8"
>
<script>
FORM_PLAYER_URL_PREFIX
=
"
http://demoextfp.synergy.tm/Synergy/
"
;
</script>
<!-- LOCALIZATION LIBRARY -->
<script
src=
"http://demoextfp.synergy.tm/Synergy/js/i18next.min.js"
type=
"application/javascript"
></script>
<!-- JS FORMS -->
<link
rel=
"stylesheet"
href=
"http://demoextfp.synergy.tm/Synergy/js/form.player.css"
/>
<script
src=
"http://demoextfp.synergy.tm/Synergy/js/vendor.js"
type=
"text/javascript"
></script>
<script
src=
"http://demoextfp.synergy.tm/Synergy/js/form.player.js"
type=
"text/javascript"
></script>
<!-- PORTAL SCRIPTS AND STYLESHEET -->
<script
src=
"index.js"
type=
"text/javascript"
></script>
<link
href=
"index.css"
rel=
"stylesheet"
/>
<link
href=
"uc7.css"
rel=
"stylesheet"
/>
<script
src=
"uc7.js"
type=
"text/javascript"
></script>
</head>
<body>
<div
style=
"z-index: 0"
class=
"portal-center"
>
<div
class=
"portal-toolbar"
id=
"portal_toolbar"
>
<span>
Введите номер заявки
</span><input
type=
"text"
id=
"search_input"
/>
<button
id=
"search_button"
class=
"portal_button search_button"
value=
"SEARCH"
onclick=
"portal.searchData()"
>
SEARCH
</button>
<button
id=
"create_button"
class=
"portal_button create_button"
value=
"CREATE"
onclick=
"portal.createPlayer()"
>
CREATE
</button>
</div>
<!-- Кастомный выпадающий список с поиском и пагинатором -->
<div
class=
"drop_down_list"
>
<div
class=
"result_search_combo"
>
</div>
<div
class=
"drop_down_toolbar"
>
<div
class=
"drop_down_toolbar1"
>
<div
class=
"first_page"
></div>
<div
class=
"previous_page"
></div>
<div
class=
"split padding"
>
|
</div>
Страница
<input
type=
"text"
value=
"1"
class=
"margin input_page"
/>
из
<div
class=
"count_result padding"
>
5
</div>
<div
class=
"split padding"
>
|
</div>
<div
class=
"next_page"
></div>
<div
class=
"last_page"
></div>
</div>
</div>
</div>
<div
id=
"form_player_container"
>
<div
id=
"form_player_div"
>
</div>
</div>
<button
id=
"send_button"
class=
"portal_button hidden"
value=
"SEND"
onclick=
"portal.saveData()"
>
SEND
</button>
</div>
<div
id=
"message"
class=
"hidden"
>
<span
id=
"message_text"
></span>
</div>
</body>
</html>
guide/_static/html/integration/extfp-usecases/uc7/index.js
0 → 100644
View file @
106ab9df
'
use strict
'
;
var
synergyURL
=
"
http://demoextfp.synergy.tm/Synergy/
"
;
var
tokenServiceURL
=
"
http://demoextfp.synergy.tm/TokenService/rest/tokenService/getToken
"
;
AS
.
OPTIONS
.
locale
=
"
ru
"
;
AS
.
OPTIONS
.
coreUrl
=
"
http://demoextfp.synergy.tm/Synergy/
"
;
var
portal
=
{
player
:
null
,
/**
* показать сообщение об ошибке
* @param{string} message
*/
showMessage
:
function
(
message
)
{
jQuery
(
"
#message_text
"
).
html
(
message
);
jQuery
(
"
#message
"
).
show
();
},
/**
* скрыть панель сообщений
*/
hideMessage
:
function
()
{
jQuery
(
"
#message
"
).
hide
();
},
/**
* очистить текущий проигрыватель форм
*/
clearPlayer
:
function
()
{
if
(
portal
.
player
)
{
portal
.
player
.
destroy
();
}
jQuery
(
"
#send_button
"
).
hide
();
portal
.
player
=
null
;
},
/**
* добавить новый проигрыватель форм
*/
createPlayer
:
function
(
dataId
)
{
portal
.
clearPlayer
();
portal
.
player
=
AS
.
FORMS
.
createPlayer
();
AS
.
FORMS
.
bus
.
on
(
AS
.
FORMS
.
EVENT_TYPE
.
formShow
,
function
(
event
,
model
,
view
)
{
model
.
on
(
AS
.
FORMS
.
EVENT_TYPE
.
dataLoad
,
function
()
{
});
if
(
view
.
editable
)
{
jQuery
(
"
#send_button
"
).
show
();
jQuery
(
"
#send_button
"
).
removeAttr
(
'
disabled
'
,
'
disabled
'
);
}
});
portal
.
player
.
view
.
setEditable
(
_
.
isUndefined
(
dataId
));
portal
.
player
.
showFormData
(
"
e0bb813a-fc15-4acc-bcf2-fd5c1ee303ef
"
,
0
,
dataId
);
portal
.
player
.
view
.
appendTo
(
$
(
'
#form_player_div
'
));
portal
.
player
.
model
.
on
(
"
valueChange
"
,
function
()
{
portal
.
hideMessage
();
});
},
/**
* искать форму по указанному номеру
*/
searchData
:
function
()
{
var
counterValue
=
jQuery
(
"
#search_input
"
).
val
();
AS
.
FORMS
.
ApiUtils
.
simpleAsyncGet
(
"
rest/api/asforms/search?formUUID=e0bb813a-fc15-4acc-bcf2-fd5c1ee303ef&search=
"
+
encodeURIComponent
(
counterValue
)
+
"
&field=counter&type=exact
"
,
function
(
data
)
{
if
(
data
===
null
||
!
(
data
instanceof
Array
)
||
data
.
length
===
0
)
{
portal
.
showMessage
(
"
Заявка с указанным номером не найдена
"
);
return
;
}
var
dataId
=
data
[
0
];
portal
.
createPlayer
(
dataId
);
});
},
/**
* сохранить данные, получить их, отобразить номер счетчика для дальнейшего поиска
*/
saveData
:
function
()
{
var
errors
=
portal
.
player
.
model
.
getErrors
();
if
(
errors
.
length
>
0
)
{
portal
.
showMessage
(
"
Введите все обязательные поля
"
);
return
;
}
jQuery
(
"
#send_button
"
).
attr
(
'
disabled
'
,
'
disabled
'
);
var
counterValue
=
portal
.
player
.
model
.
getModelWithId
(
'
counter
'
).
getValue
();
AS
.
FORMS
.
ApiUtils
.
simpleAsyncGet
(
"
rest/api/registry/create_doc?registryID=5279da23-4cdb-4527-92f8-eb70b6983a48
"
,
function
(
result
)
{
if
(
result
.
errorCode
!=
0
)
{
portal
.
showMessage
(
"
Во время сохранения данных по форме произошли ошибки. Обратитесь к администратору
"
);
return
;
}
portal
.
player
.
model
.
asfDataId
=
result
.
dataUUID
;
portal
.
player
.
saveFormData
(
function
(
result
)
{
if
(
_
.
isUndefined
(
result
))
{
portal
.
showMessage
(
"
Во время сохранения данных по форме произошли ошибки. Обратитесь к администратору
"
);
return
;
}
AS
.
FORMS
.
ApiUtils
.
simpleAsyncGet
(
'
rest/api/asforms/data/
'
+
result
,
function
(
data
)
{
data
.
data
.
forEach
(
function
(
value
)
{
if
(
value
.
id
===
'
counter
'
)
{
counterValue
=
value
.
value
;
portal
.
showMessage
(
"
Ваша заявка была принята в обработку. Номер заявки -
"
+
counterValue
);
}
});
});
portal
.
clearPlayer
();
});
});
}
};
$
(
document
).
ready
(
function
()
{
jQuery
.
ajax
({
method
:
"
GET
"
,
url
:
tokenServiceURL
+
"
?url=
"
+
synergyURL
,
success
:
function
(
data
)
{
AS
.
OPTIONS
.
login
=
"
$key
"
;
AS
.
OPTIONS
.
password
=
data
;
portal
.
createPlayer
();
}
});
jQuery
(
document
).
mouseup
(
function
(
e
)
{
var
container
=
jQuery
(
"
#message
"
);
if
(
!
container
.
is
(
e
.
target
)
&&
container
.
has
(
e
.
target
).
length
===
0
)
{
container
.
hide
();
}
});
});
guide/_static/html/integration/extfp-usecases/uc7/uc7.css
0 → 100644
View file @
106ab9df
.drop_down_list
{
background-color
:
white
;
display
:
none
;
position
:
absolute
;
box-shadow
:
0
0
35px
#d6d6d6
;
}
.drop_down_input
{
width
:
100%
;
font-family
:
arial
,
tahoma
,
sans-serif
;
font-size
:
12px
;
padding-left
:
2px
;
box-sizing
:
border-box
;
-moz-box-sizing
:
border-box
;
-webkit-box-sizing
:
border-box
;
height
:
28px
;
align-self
:
center
;
border
:
solid
1px
#d6d6d6
;
border-radius
:
4px
;
background-color
:
#ffffff
;
display
:
inline-block
;
vertical-align
:
middle
;
line-height
:
28px
;
white-space
:
nowrap
;
text-overflow
:
ellipsis
;
overflow
:
hidden
;
cursor
:
pointer
;
}
.result_search_combo
{
height
:
80%
;
overflow-y
:
scroll
;
max-height
:
300px
;
}
.result_element
{
padding
:
5px
10px
;
text-align
:
left
;
border-bottom
:
1px
solid
#d6d6d6
;
margin
:
0px
3px
;
font-family
:
arial
,
tahoma
,
sans-serif
;
font-size
:
12px
;
}
.result_element
:hover
{
background-color
:
#deefff
;
}
.drop_down_toolbar
{
display
:
inline-block
;
padding
:
10px
;
}
.drop_down_toolbar1
{
display
:
flex
;
width
:
290px
;
}
.first_page
{
background-size
:
100%
100%
;
width
:
20px
;
height
:
20px
;
background-image
:
url("icon/first.ico")
;
}
.first_page
:hover
{
background-color
:
#deefff
;
}
.previous_page
{
background-size
:
100%
100%
;
width
:
20px
;
height
:
20px
;
background-image
:
url("icon/previous.ico")
;
}
.previous_page
:hover
{
background-color
:
#deefff
;
}
.next_page
{
background-size
:
100%
100%
;
width
:
20px
;
height
:
20px
;
background-image
:
url("icon/next.ico")
;
}
.next_page
:hover
{
background-color
:
#deefff
;
}
.last_page
{
background-size
:
100%
100%
;
width
:
20px
;
height
:
20px
;
background-image
:
url("icon/last.ico")
;
}
.last_page
:hover
{
background-color
:
#deefff
;
}
.padding
{
padding
:
0px
5px
;
}
.input_page
{
width
:
40px
;
}
.margin
{
margin
:
0px
5px
;
}
guide/_static/html/integration/extfp-usecases/uc7/uc7.js
0 → 100644
View file @
106ab9df
/**
* Created by m.milutin on 16.08.16.
*/
//Все элементы выпадающего списка
var
elements
=
[];
//Элементы которые подходят по запросу поиска
var
filteredElements
=
[];
//Количество доступных страниц
var
allSize
=
0
;
//Модель изначального комбобокса
var
comboModel
;
//Запись от которой начинается отображение
var
start
=
0
;
//До какой записи отображать значения
var
end
=
start
+
15
;
//Текущая страница
var
currentPage
=
0
;
AS
.
FORMS
.
bus
.
on
(
AS
.
FORMS
.
EVENT_TYPE
.
formShow
,
function
(
event
,
model
,
view
)
{
var
playerModel
=
model
;
if
(
playerModel
.
formId
!=
'
e0bb813a-fc15-4acc-bcf2-fd5c1ee303ef
'
)
{
return
;
}
if
(
!
view
.
editable
)
{
return
;
}
var
comboView
=
view
.
getViewWithId
(
'
dirty-combobox
'
);
var
comboModel
=
playerModel
.
getModelWithId
(
'
dirty-combobox
'
);
playerModel
.
on
(
AS
.
FORMS
.
EVENT_TYPE
.
dataLoad
,
function
()
{
//Убираем изначальный комбобокс
comboView
.
container
.
empty
();
//Создаем поле для ввода запроса
var
input
=
jQuery
(
"
<input/>
"
,
{
type
:
"
text
"
,
class
:
"
drop_down_input
"
});
input
[
0
].
setValue
=
function
(
id
,
text
)
{
comboModel
.
setValue
(
id
);
};
//Вставляем в ту зону в которой был старый комбо
comboView
.
container
.
append
(
input
);
//Когда произведен клик по полю ввода отобразить выпадающий список
input
.
on
(
'
click
'
,
function
()
{
showDropDownInput
();
});
//Когда нажата клавиша отобразить выпадающий список и начать поиск
input
.
keypress
(
function
()
{
showDropDownInput
();
search
(
jQuery
(
'
.drop_down_input
'
).
val
());
});
comboModel
.
on
(
"
valueChange
"
,
function
()
{
input
.
val
(
comboModel
.
getTextValue
());
});
//Берем модель и подписываемся на событие загрузки данных, для получения справочника
});
comboModel
.
on
(
AS
.
FORMS
.
EVENT_TYPE
.
dataLoad
,
function
()
{
elements
=
comboModel
.
listElements
;
filteredElements
=
comboModel
.
listElements
;
allSize
=
Math
.
ceil
(
filteredElements
.
length
/
15
);
//Сбрасываем текущую страницу
setCurrentPage
(
1
);
});
addHandlers
();
});
/**
* Добавление событий
* */
var
addHandlers
=
function
()
{
//Нажатие на кнопку следующая страница
jQuery
(
"
.next_page
"
).
on
(
'
click
'
,
function
()
{
next
();
});
//Нажатие на кнопку предыдущая страница
jQuery
(
"
.previous_page
"
).
on
(
'
click
'
,
function
()
{
previous
();
});
//Нажатие на кнопку первая страница
jQuery
(
"
.first_page
"
).
on
(
'
click
'
,
function
()
{
firstPage
();
});
//Нажатие на кнопку последняя страница
jQuery
(
"
.last_page
"
).
on
(
'
click
'
,
function
()
{
lastPage
();
});
//Ввод страницы, по нажатию на энтер будет произведен переход
jQuery
(
'
.input_page
'
).
keypress
(
function
(
e
)
{
if
(
e
.
which
==
13
)
{
setCurrentPage
(
jQuery
(
'
.input_page
'
).
val
());
}
});
//Скрытие выпадающего списка, по нажатию на поле вне его
jQuery
(
document
).
mouseup
(
function
(
e
)
{
var
container
=
jQuery
(
"
.drop_down_list
"
);
if
(
!
container
.
is
(
e
.
target
)
&&
container
.
has
(
e
.
target
).
length
===
0
)
{
container
.
hide
();
}
});
};
/**
* Отображение выпадающего списка
*/
var
showDropDownInput
=
function
()
{
var
input
=
jQuery
(
'
.drop_down_input
'
);
var
position
=
input
.
position
();
var
list
=
jQuery
(
'
.drop_down_list
'
);
list
.
css
({
top
:
position
.
top
+
input
.
height
()
+
6
,
left
:
position
.
left
});
list
.
css
({
width
:
input
.
width
()})
list
.
show
();
};
/**
* Следующая страница
*/
var
next
=
function
()
{
if
(
currentPage
+
1
>
allSize
)
{
return
;
}
start
=
end
;
currentPage
++
;
end
=
start
+
15
;
setPage
();
};
/**
* Поиск
*
* @param value - значение поиска
*/
var
search
=
function
(
value
)
{
start
=
0
;
end
=
start
+
15
;
currentPage
=
1
;
filteredElements
=
[];
elements
.
forEach
(
function
(
element
)
{
if
(
element
.
label
.
toLowerCase
().
indexOf
(
value
.
toLowerCase
())
!==
-
1
)
{
filteredElements
.
push
(
element
);
}
});
allSize
=
Math
.
ceil
(
filteredElements
.
length
/
15
);
setPage
();
};
/**
* Предыдущая страница
*/
var
previous
=
function
()
{
if
(
currentPage
-
1
<
1
)
{
return
;
}
start
=
start
-
15
;
currentPage
--
;
end
=
start
+
15
;
setPage
();
};
/**
* Изменение положения страницы в зависимости от состояния глобальных переменных
*/
var
setPage
=
function
()
{
var
showed
=
filteredElements
.
slice
(
start
,
end
);
jQuery
(
"
.result_search_combo
"
).
empty
()
showed
.
forEach
(
function
(
element
)
{
var
opt
=
jQuery
(
"
<div class='result_element' code='
"
+
element
.
value
+
"
'>
"
+
element
.
label
+
"
</div>
"
);
opt
.
on
(
'
click
'
,
function
()
{
jQuery
(
'
.drop_down_input
'
)[
0
].
setValue
(
jQuery
(
this
).
attr
(
'
code
'
),
jQuery
(
this
).
html
());
jQuery
(
"
.drop_down_list
"
).
hide
();
});
jQuery
(
'
.result_search_combo
'
).
append
(
opt
);
});
jQuery
(
'
.input_page
'
).
val
(
currentPage
);
jQuery
(
'
.count_result
'
).
html
(
allSize
);
};
/**
* Первая страница
*/
var
firstPage
=
function
()
{
setCurrentPage
(
1
);
};
/**
* Последняя страница
*/
var
lastPage
=
function
()
{
setCurrentPage
(
allSize
);
};
/**
* Изменить состояние страницы
*
* @param value - значение
*/
var
setCurrentPage
=
function
(
value
)
{
if
(
!
jQuery
.
isNumeric
(
value
))
{
setCurrentPage
(
currentPage
);
return
;
}
if
(
value
>
allSize
)
{
value
=
allSize
;
}
else
if
(
value
<
1
)
{
value
=
1
;
}
currentPage
=
value
;
end
=
currentPage
*
15
;
start
=
end
-
15
;
setPage
();
};
guide/integration.rst
View file @
106ab9df
...
...
@@ -946,6 +946,7 @@ ARTA Synergy при загрузке внешнего web-модуля буде
integration
/
extfp
-
usecases
/
uc4
integration
/
extfp
-
usecases
/
uc5
integration
/
extfp
-
usecases
/
uc6
integration
/
extfp
-
usecases
/
uc7
Ссылки
на
модули
системы
и
их
внутренние
элементы
-------------------------------------------------
...
...
guide/integration/extfp-usecases/uc7.rst
0 → 100644
View file @
106ab9df
Вариант 8. Изменение компонента формы
-------------------------------------
Внешний портал изменяет компонент формы "Выпадающий список" на новый (при этом его значения не изменяются):
* компонент не содержит кнопки справа, список открывается по нажатию на поле ввода;
* в поле ввода встроен живой поиск;
* список разделен на страницы, каждая страница содержит до 15 значений;
* переход между страницами осуществляется пагинатором:
* переход к первой странице;
* переход к предыдущей странице;
* переход к конкретной странице;
* переход к следующей странице;
* переход к последней странице;
* пагинатор также отображает общее количество страниц.
.. raw:: html
<iframe src="../../_static/html/integration/extfp-usecases/uc7/index.html" scrolling='no' height="600px" width="100%" style="border:1px solid grey;"></iframe>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment