AXForum  
Вернуться   AXForum > Прочие обсуждения > Курилка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.05.2017, 00:15   #1  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
Most Valuable Professional
 
28,479 / 3359 (168) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Какие библиотеки используют разные веб-клиенты Dynamics?
Здесь возникла интересная тема, из которой родился вопрос к CRMщикам, навижиноводам и аксаптоведам:

Какие библиотеки используют разные веб-клиенты Dynamics?
например, акс7 использует React и jQuery.
а клиент cloudPOS использует knockout.

какие еще варианты бывают в Dynamics-продуктах?
создайте скриншот, на котором видны импортируемые js-скрипты и библиотеки типичной секции <head> типичной html-страницы вашего клиента и опубликуйте пост в этой ветке.
хотелось бы увидеть библиотеки для аксаптовского WMS, для Навика, для CRM разных версий и в разных браузерах.

например, вот так выглядит Head-секция ax7 в IE11
Миниатюры
Нажмите на изображение для увеличения
Название: ax7-head.PNG
Просмотров: 46
Размер:	109.3 Кб
ID:	11417   Нажмите на изображение для увеличения
Название: ax7.PNG
Просмотров: 19
Размер:	68.3 Кб
ID:	11420  

__________________
GitHub, Facebook, mazzy.priot, mazzy.music, coub.

Последний раз редактировалось mazzy; 25.05.2017 в 00:29.
Старый 25.05.2017, 00:16   #2  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
Most Valuable Professional
 
28,479 / 3359 (168) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
а вот так выглядит head-секция cloudPOS в Retail-компоненте Аксапты 7 в IE11.
Миниатюры
Нажмите на изображение для увеличения
Название: pos-head.PNG
Просмотров: 36
Размер:	82.9 Кб
ID:	11418   Нажмите на изображение для увеличения
Название: pos.jpg
Просмотров: 30
Размер:	116.7 Кб
ID:	11419  

__________________
GitHub, Facebook, mazzy.priot, mazzy.music, coub.

Последний раз редактировалось mazzy; 25.05.2017 в 00:28.
Старый 25.05.2017, 00:30   #3  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
Most Valuable Professional
 
28,479 / 3359 (168) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
online-магазин в Retail-компоненте ax7, IE11
Миниатюры
Нажмите на изображение для увеличения
Название: online-store-head.PNG
Просмотров: 36
Размер:	81.2 Кб
ID:	11421   Нажмите на изображение для увеличения
Название: online-store.jpg
Просмотров: 24
Размер:	86.2 Кб
ID:	11422  

__________________
GitHub, Facebook, mazzy.priot, mazzy.music, coub.
Старый 25.05.2017, 00:33   #4  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
MCP
Лучший по профессии 2011
Лучший по профессии 2009
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
 
2,997 / 808 (32) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
По просьбе mazzy
Скриншоты head из Dynamics 365 for Sales:

Нажмите на изображение для увеличения
Название: Head1.jpg
Просмотров: 29
Размер:	286.8 Кб
ID:	11423
Нажмите на изображение для увеличения
Название: Head2.jpg
Просмотров: 20
Размер:	286.5 Кб
ID:	11424
Нажмите на изображение для увеличения
Название: Head3.png
Просмотров: 15
Размер:	110.2 Кб
ID:	11425
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Читайте мой блог
За это сообщение автора поблагодарили: mazzy (2).
Старый 25.05.2017, 00:39   #5  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
MCP
Лучший по профессии 2011
Лучший по профессии 2009
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
 
2,997 / 808 (32) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
А вцелом - Dynamics 365 for Sales (ну или CRM в простонародьи) построен на накауте плюс визуализация jQuery UI.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Читайте мой блог
Старый 25.05.2017, 01:00   #6  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
Most Valuable Professional
 
28,479 / 3359 (168) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Цитата:
Сообщение от a33ik Посмотреть сообщение
построен на накауте
а как он подгружается? в списке скриптов на скриншотах вроде не видно
__________________
GitHub, Facebook, mazzy.priot, mazzy.music, coub.
Старый 25.05.2017, 03:20   #7  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
MCP
Лучший по профессии 2011
Лучший по профессии 2009
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
 
2,997 / 808 (32) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от mazzy Посмотреть сообщение
а как он подгружается? в списке скриптов на скриншотах вроде не видно
Я не разбирался, но eval никто не отменял - его могут приклеивать налету. Просто понял, что используется накаут когда исследовал внутренности форм.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Читайте мой блог
За это сообщение автора поблагодарили: mazzy (2).
Старый 25.05.2017, 11:42   #8  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
Most Valuable Professional
 
28,479 / 3359 (168) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Спасибо Ivanhoe.
Да, для мини-сайта, который предназначен для браузеров ТСД, вполне оправдан подход "никаких внешних библиотек".

Да, согласен, что в акс7 такой инструмент уже не нужен.

Цитата:
Сообщение от Ivanhoe
Мини-сайт появился в AX 2012 R3 для ТСД. Ниже исходник страницы с логином.

PHP код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head id="Head1"><title>
    
Warehouse Mobile Devices Portal
</title><meta name="viewport" content="width=device-width" /><link href="/Content/CSS/RFCSS/defaultrf.css" rel="stylesheet" type="text/css" />

    <
script language="javascript" type="text/javascript">

var 
submitted false;

// all functions here that you want to run when the page is loaded
function addListener(elementtypeexpression) {

    
"use strict";

    
element.attachEvent(typeexpression);
}

function 
attachOnFocus() {

    
"use strict;"

    
var elmf;

    

                  
elm document.getElementById('UserId');

                  
= Function('HandleOnFocusEvents(0);');

                  
addListener(elm'onfocus'f);

           

                  
elm document.getElementById('Password');

                  
= Function('HandleOnFocusEvents(1);');

                  
addListener(elm'onfocus'f);

           

                  
elm document.getElementById('Login');

                  
= Function('HandleOnFocusEvents(2);');

                  
addListener(elm'onfocus'f);

           

}

function 
buildOnFocusArray() {

    
"use strict";

    var 
focusme = [];

    
            
focusme[0] = "UserId";

    
            
focusme[1] = "Password";

    
            
focusme[2] = "Login";

    

    return 
focusme;
}

function 
buildOnKeyDownArray() {

    
"use strict";

    var 
menu = [];

    

    return 
menu;

}

function 
submitForm(btnId) {

    
"use strict";

    var 
btn document.getElementById(btnId);

    if (
btn !== null || btnId === 'ENTERPRESSED') {

        if (!
submitted) {
            
submitted true;

            if (
btnId !== 'ENTERPRESSED') {

                var 
clickedButton document.getElementById('ClickedButton');

                
// if clicked button is empty, we know it was submitted by default button
                
var type btn.getAttribute('type');
                if (
type === 'button') {
                    
clickedButton.value btn.id;
                } else {
                    
clickedButton.value '';
                }
            }

            
document.forms[0].submit();
        }
    }

    return 
false;
}

function 
determineButtonClick(element) {

    
"use strict";

    
// we know this scenario is valid because there is a menu

    
submitForm(element.id);
}

function 
focusFirstEnabledInput() {

    
"use strict";

    
// get all form elements
    
var elmselmFocused;
    
elms document.forms[0].elements;
    
elmFocused false;

    var 
ijelmtypetoFocusElmstoFocusElm;
    for (
0elms.length+= 1) {

        
// set focus on first enabled empty text field
        
elm elms[i];

        
// ensure it doesn't have a selectedtac index as we won't be setting focus to textfields
        // trying to get the type on a select in Intermec fails because it doesn't exist...
        // only select has a selectedIndex
        
if (elm.selectedIndex === undefined) {

            
type elm.getAttribute('type');

            if ((
type === 'text' || type === 'password') && !elm.disabled && elm.style.display !== 'none' && elm.value === '') {

                
// update the current focus hidden field then set focus

                
toFocusElms buildOnFocusArray();

                for (
0toFocusElms.length+= 1) {

                    
toFocusElm toFocusElms[j];


                    if (
elm.id === toFocusElm) {

                        
document.getElementById('CurrentFocus').value j;
                    }
                }

                
elmFocused true;
                
elm.focus();
                return 
false;
            }
        }
    }



    
// if no elm was focused, show the hidden focus element and set focus inorder to allow for submit
    // if no elm was focused and its not menu, show the hidden focus element and set focus inorder to allow for submit
    
if (!elmFocused) {
        var 
isMenu document.getElementById('IsMenu').value;

        if (
isMenu !== 'True') {

            var 
hidfocus document.getElementById('hiddenfocus');
            
hidfocus.style.display 'block';
            
hidfocus.focus();

        }
    }
}

function 
handleTab() {

    
"use strict";

    var 
cachedFocusId document.getElementById('CurrentFocus');

    var 
currentFocusId parseInt(cachedFocusId.value10);

    var 
focusElms buildOnFocusArray();

    var 
nextFocusId = (focusElms.length 1) === currentFocusId : (currentFocusId 1);

    
cachedFocusId.value nextFocusId;

    var 
elmToFocus focusElms[nextFocusId];

    var 
etf document.getElementById(elmToFocus);

    
etf.focus();
}

var 
firstFocusEvent true;

function 
handleOnFocusEvents(key) {

    
"use strict";

    
// only want this to run after the first time as we are already handling that
    
if (!firstFocusEvent) {

        var 
elmsToFocus buildOnFocusArray();

        if (
elmsToFocus.length 0) {

            var 
elmId elmsToFocus[key];

            var 
elm document.getElementById(elmId);

            
// update the current focus hidden field then set focus
            
document.getElementById('CurrentFocus').value key;

            
elm.focus();
        }
    }

    
firstFocusEvent false;
}

function 
handleOnKeyDown(e) {

    
"use strict";

    var 
kd buildOnKeyDownArray();
    var 
key e.keyCode || e.which;

    var 
elmToSubmit;

    if (
key === 13) {
        
elmToSubmit 'ENTERPRESSED';
    } else {
        
// grab element out of the array
        
elmToSubmit kd[key];
    }

    
// if we have a valid key, example function key, prevent the default
    
if (elmToSubmit !== undefined) {
        if (
e.stopPropagation) {
            
// ff
            
e.stopPropagation();
            
e.preventDefault();
        } else {
            
// ie
            
e.returnValue false;
            
e.keyCode 0;

        }
    }

    
submitForm(elmToSubmit);

    return 
false;
}

function 
iBKeyHandler(id) {

    
"use strict";

    
submitForm(id);
}

function 
submitFormBarcode() {

    
"use strict";

    
submitForm('ENTERPRESSED');
}

document.onkeydown = function(e) {

    
"use strict";

    
|| event;

    
handleOnKeyDown(e);
}

function 
init() {

    
"use strict";

    
focusFirstEnabledInput();
}

    
</script>


    <!--
        not used everywhere (used @ forney)
    <meta http-equiv="IB_UPCA_Reencode_As_EAN13" content="False" /> -->
    <meta http-equiv="IB_Scanner" content="Enabled" /><meta http-equiv="IB_ScannerNavigate" content="Javascript: submitFormBarcode();" /><meta http-equiv="IB_OnKey13" content="Javascript: submitForm('ENTERPRESSED')" /><meta http-equiv="IB_OnKey9" content="Javascript: handleTab()" /></head>
<body onload="init();">
    
    <div class="whsMainRFWrap">
    <form action="/Execute/Display" class="whsMainRFForm" method="post" onsubmit="return submitForm('ENTERPRESSED')"><input id="ClickedButton" name="ClickedButton" type="hidden" value="" />
        <input id="IsMenu" name="IsMenu" type="hidden" value="False" />
        <input id="SessionGuid" name="SessionGuid" type="hidden" value="4e01cfb2-6115-4850-bc19-952bfac6fc97" />

        <input name="__RequestVerificationToken" type="hidden" value="rGh5T4oy/CpYHvAG9KA/u0afgWZhUOYtoyvz5EMMtc9LMBOb0Gw/nz/lKlilCCElhlTwl07NdB4P61rVSFS38FDtWj8udXk+H3QEL7ZOwH/jOc9hu7VrOG2bKjv9DP6oh2E/uEEjd0pGoaaNLHOOwA==" />



<table class="whsMainRFTable">


<tr class="whsMainRFTableRow">
        
                
                <td colspan="2" class="whsMainRFTableCell">
            <label class="whsLabel" id="SignInLbl" style="color:#000000;">Sign in to AX</label>
         
          
        </td>
        
     </tr>
 
<tr class="whsMainRFTableRow">
        
                            <td class="whsMainRFTableCell">
                
          <label class="whsTextLabel" for="UserId">User ID</label>
                    
        </td>
                         
                <td class="whsMainRFTableCell">
                
          <input class="whsText"  type="text" name="UserId" id="UserId" value="" />
         
          
        </td>
             
</tr>
 
<tr class="whsMainRFTableRow">
                    
                <td class="whsMainRFTableCell">
                
          <label class="whsPasswordLabel" for="Password">Password</label>
                    
        </td>
            
            
                <td class="whsMainRFTableCell">
                
          <input class="whsPassword" type="password"  name="Password" id="Password" value="" maxlength="20" />
          
          
        </td>
             
</tr>
 
<tr class="whsMainRFTableRow">
          
                <td colspan="2" class="whsMainRFTableCell">
                
                <input class="whsBtn whsBtnDefault whsBtnMulti"  type="submit" name="WHSButton" id="Login" value="Login"  />
               
                </td>
         
</tr>

</table>

    <!-- below is to ensure form submit on mobile ie when all input fields are disabled/hidden/don't exist.  -->

        <input type="text" id="hiddenfocus" style="display: none" />

    <!-- end form submit -->

        </form>
        <input type="hidden" id="CurrentFocus" name="CurrentFocus" />
    </div>
</body>
</html> 
__________________
GitHub, Facebook, mazzy.priot, mazzy.music, coub.
Старый 25.05.2017, 12:00   #9  
Egil is offline
Egil
Участник
Сотрудники Microsoft Dynamics
 
2 / 39 (2) +++
Регистрация: 21.03.2017
Так выглядит типичная страница NAV 2016 в IE11

Нажмите на изображение для увеличения
Название: page.gif
Просмотров: 11
Размер:	94.2 Кб
ID:	11427

Импорт скриптов
Нажмите на изображение для увеличения
Название: src.gif
Просмотров: 19
Размер:	82.9 Кб
ID:	11428
За это сообщение автора поблагодарили: mazzy (2).
Старый 25.05.2017, 12:09   #10  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
Most Valuable Professional
 
28,479 / 3359 (168) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Цитата:
Сообщение от Egil Посмотреть сообщение
Так выглядит типичная страница NAV 2016 в IE11
чистый и минимальный jQuery. Спасибо.
__________________
GitHub, Facebook, mazzy.priot, mazzy.music, coub.
Старый 25.05.2017, 16:07   #12  
belugin is offline
belugin
Участник
Аватар для belugin
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
Сотрудники Microsoft Dynamics
 
3,935 / 2078 (77) +++++++++
Регистрация: 16.01.2004
Адрес: Москва
В Ax7 свой фреймфорк на мой дилетантский вкус типа нокаута. Вутри используется jQuery и куча разных других компонентов типа гридов

Последний раз редактировалось belugin; 25.05.2017 в 16:11.
Старый 25.05.2017, 19:35   #13  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
Most Valuable Professional
 
28,479 / 3359 (168) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Цитата:
Сообщение от belugin Посмотреть сообщение
типа нокаута.
react )

в том то и фишка, в том то и весь фейспалм,
что сама аксапта и ее компоненты основаны на разных движках.
причем ладно бы на форках одного движка, но ведь на движках-конкурентах!
__________________
GitHub, Facebook, mazzy.priot, mazzy.music, coub.
Старый 26.05.2017, 18:44   #14  
belugin is offline
belugin
Участник
Аватар для belugin
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
Сотрудники Microsoft Dynamics
 
3,935 / 2078 (77) +++++++++
Регистрация: 16.01.2004
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
react )
Я вот конкретно в коде компонентов не видел следов реакта. Видел только *dyn* теги с привязкой данных по типу нокаута.
Старый 26.05.2017, 20:44   #15  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
Most Valuable Professional
 
28,479 / 3359 (168) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
скриншот в первом сообщении этой ветки
__________________
GitHub, Facebook, mazzy.priot, mazzy.music, coub.
Старый 26.05.2017, 21:24   #16  
belugin is offline
belugin
Участник
Аватар для belugin
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
Сотрудники Microsoft Dynamics
 
3,935 / 2078 (77) +++++++++
Регистрация: 16.01.2004
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
скриншот в первом сообщении этой ветки
Это получившаяся страница а не код компонентов. Просто интересно для чего именно оно используется
 

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 07:38.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.