1. Куча / Говнокод #15733

    +129

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    <script>
    // Browser Window Size and Position
    // copyright Stephen Chapman, 3rd Jan 2005, 8th Dec 2005
    // you may copy these functions but please keep the copyright notice as well
    function pageWidth()
    { return window.innerWidth != null ? window.innerWidth : document.documentElement && document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body != null ? document.body.clientWidth : null; }
    function pageHeight()
    { return window.innerHeight != null ? window.innerHeight : document.documentElement && document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body != null ? document.body.clientHeight : null; }
    function posLeft()
    { return typeof window.pageXOffset != 'undefined' ? window.pageXOffset : document.documentElement && document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ? document.body.scrollLeft : 0; }
    function posTop()
    { return typeof window.pageYOffset != 'undefined' ? window.pageYOffset : document.documentElement && document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ? document.body.scrollTop : 0; }
    function posRight()
    { return posLeft() + pageWidth(); }
    function posBottom()
    { return posTop() + pageHeight(); }
    
    function SetWindowSize(s, h, w) {
        var wid = pageWidth();
        var hei = pageHeight();
        var n_wid = Math.round(wid * w);
        var n_hei = Math.round(hei * h);
        s.SetWidth(n_wid);
        s.SetHeight(n_hei);
    }
    function SetWindowW(s, w) {
        var wid = pageWidth();
        var n_wid = Math.round(wid * w);
        s.SetWidth(n_wid);
    }
    </script>
    <html>
    ...
                <td>
                    <dx:ASPxButton ID="AddCopyTemplate" runat="server" Text="Создать копию" 
                        AutoPostBack="False" 
                        CssFilePath="~/App_Themes/Office2010Black/{0}/styles.css" 
                        CssPostfix="Office2010Black" 
                        SpriteCssFilePath="~/App_Themes/Office2010Black/{0}/sprite.css" 
                        Wrap="True" >
                        <ClientSideEvents Click="function(s, e) {
    	AddCopyTemplate();
    }" Init="function(s, e) {
    	Get_Sizes_wid(s,1075);
    }" />
                    </dx:ASPxButton>
                </td>
                <td>
                    <dx:ASPxButton ID="AddTemplate" runat="server" Text="Создать" 
                        AutoPostBack="False" 
                        CssFilePath="~/App_Themes/Office2010Black/{0}/styles.css" 
                        CssPostfix="Office2010Black" 
                        SpriteCssFilePath="~/App_Themes/Office2010Black/{0}/sprite.css">
                        <ClientSideEvents Click="function(s, e) {
    	AddTemplateClick();
    }" Init="function(s, e) {
    	Get_Sizes_wid(s,1075);
    }" />
                    </dx:ASPxButton>
                </td>
    ...
    </html>

    я даже не знаю, в какой раздел это постить, но пусть будет тут.
    товарищ, пользовался горячелюбимыми контролами от DevExpress, которые работают херпойми как, но сейчас не об этом.
    в секции ClientSideEvents есть скрипты, которые выполняются на клиенте при старте, так вот он и поставил туда вызов функции, которая выставляет размеры для элементов.
    это одностраничное приложение на 1100 строк только одной размеки, где используется огромное количество различных элементов, панели, гриды, гнопки, модальные окна, и много всего прочего... и ни у одного из них не заданы вообще никакие размеры, все работает на этих JS функциях.
    эти волшебные цифры, которые передаются в функцию рассчитаны на его монитор, и как только они отрываются на другом мониторе с другим разрешением, то эти две кнопки занимают примерно 80% экрана.
    а самое главное, что модальные окна занимают примерно 80% высоты и ширины экрана, и сначала они рисуются по центру экрана, а потом увеличиваются функцией, из-за чего они уезжают за границы экрана

    Запостил: Lokich, 11 Апреля 2014

    Комментарии (6) RSS

    • Автор не знает CSS? Или это хардкорный вариант толстого клиента?
      Хотя, был-бы толстый клиент, то интересней было-бы на Ext.Js писать. Там и о разметке-то можно особо не заморачиваться.

      А вот это вынести в .skin файлы в папке App_Themes? Не?
      CssFilePath="~/App_Themes/Office2010Black/{0}/styles.css"
      SpriteCssFilePath="~/App_Themes/Office2010Black/{0}/sprite.css"


      А то задвоение кода глаза режет :)
      Ответить
      • я бы сказал, что автор веб не знает. он все эти элементы лепил в визуальном редакторе, и там в гуях были все эти параметры. он в разметку кажется вообще не заглядывал даже.
        есть еще одно его творение, по такому же принципу, так там толстейший клиент был. когда пользователь заходил на страницу, выбирал фильтры и начинал работать ему в браузер около 5мб фарша вываливалось, который DevExpress генерил.
        а первая версия да, делалась на ExtJs. у нас был вполне себе тонкий клиент, который общался только с низкоуровневыми вебслужбами, но его завернули. требовали динамические фильтры у грида с сортировками и пейджингом. я конечно сказал, что это выполнимо, но нужно время. мне сказали, что времени нет, купили DevExpress, в два клика сделали грид с пейджингом и сортировками, а потом еще месяца 2 топтались, чтобы нагнать уже реализованный на ExtJs функционал.
        в результате мы получили примерно 2 тысячи строк в Page_Init() из серии
        if(Button1.IsCallBack()){...} else if(Button2.IsCallBack()){...}
        Ответить
        • >чтобы нагнать уже реализованный на ExtJs функционал.
          http://www.ext.net/
          Но привыкать к кодингу элементов - хардкор. Ну и денег меня жаба задушила платить, так что дока только из открытых источников. Пример (Морда к ITIL'овскому HD):
          <asp:Content ContentPlaceHolderID="data" runat="server">
          	<ext:History ID="history" runat="server">
          		<Listeners>
          			<Change Fn="history_Changed" />
          		</Listeners>
          	</ext:History>
          	<ext:Store ID="storeQuestions" AutoSave="true" RemoteSort="true" OnReadData="storeQuestions_ReadData" runat="server">
          		<AutoLoadParams>
          			<ext:Parameter Name="start" Value="0" Mode="Raw" />
          			<ext:Parameter Name="limit" Value="10" Mode="Raw" />
          			<ext:Parameter Name="sort" />
          			<ext:Parameter Name="dir" />
          		</AutoLoadParams>
          		<Proxy>
          			<ext:PageProxy />
          		</Proxy>
          		<Model>
          			<ext:Model IDProperty="QuestionID" runat="server">
          				<Fields>
          					<ext:ModelField Name="Body" />
          					<ext:ModelField Name="QuestionStatusName" />
          					<ext:ModelField Name="DateAdded" />
          					<ext:ModelField Name="DateAddedString" />
          					<ext:ModelField Name="DateAnsweredString" />
          				</Fields>
          			</ext:Model>
          		</Model>
          	</ext:Store>
          	<ext:Store ID="storeParameterType" OnReadData="storeParameterType_ReadData" runat="server">
          		<Proxy>
          			<ext:PageProxy />
          		</Proxy>
          		<Model>
          			<ext:Model IDProperty="ParameterTypeID" runat="server">
          				<Fields>
          					<ext:ModelField Name="DisplayName" />
          				</Fields>
          			</ext:Model>
          		</Model>
          	</ext:Store>
          </asp:Content>

          Это ещё даже не вёрстка...
          Ответить
        • а первая версия да, делалась на ExtJs
          что времени нет, купили DevExpress
          Вот тут говно, а это - его последствия. :)

          Ну и на ExtJs странно писать тонкий клиент. Я понимаю, там, JQuery всякие, а ExtJs сам по себе на толстую разработку заточен.
          Ответить
          • я подразумевал то, что браузер был не перегружен скриптами, и работал довольно быстро. не было передачи мегабайт данных туда-сюда :)
            Ответить

    Добавить комментарий